{
  "openapi": "3.0.0",
  "info": {
    "version": "1.0",
    "description": "Welcome to the Spot by Flexera OpenAPI Specification.\nHere you will find REST definitions for all Spot products and platform administration tasks.\n\nThe API is hosted at `https://api.spotinst.io` and requires Bearer Token\nAuthentication.\n\nFor more information on how to use the Spot platform, including user guides,\ndeveloper guides, concepts, and tutorials, see the external [Spot Documentation](https://docs.flexera.com/spot/).\n",
    "title": "Spot by Flexera API",
    "x-logo": {
      "url": "https://spec.dev.spot.io/flexera-spot.png",
      "altText": "SpotByFlexeraLogo",
      "href": "https://spec.dev.spot.io"
    },
    "contact": {
      "email": "support@flexera.com"
    }
  },
  "externalDocs": {
    "url": "https://docs.flexera.com/spot/"
  },
  "servers": [
    {
      "url": "https://api.spotinst.io"
    }
  ],
  "security": [
    {
      "auth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "auth": {
        "description": "To generate bearer tokens and understand more about Spot by Flexera\nauthentication see the howto for\n[token creation](https://docs.flexera.com/spot/administration/api/create-api-token)\non the Spot Help site.\n\n### Organizations and Accounts\n\nEach Spot account is assigned to an organization and a set of environment Accounts.\nAn account is then linked to a specific cloud provider account.\n\nSpot accounts are given an ID in the format `act-123abcd` that is sent as a query parameter while performing API calls.\n\nTo locate the account ID navigate to Settings -> Account in the Spot console.\n\n### Organizations with a Single Account\nEach API call you make can be used with or without the account ID.\n\n### Organizations with Multiple Accounts\nEach API call you make should be appended to the account ID. For example:\n\nGET `https://api.spotinst.io/aws/ec2/group?accountId=act-123de678`\nThis call will return the list of Elastigroups for the specific Account used.\n\n> NOTE: If no `accountId` is provided, the default (dldest) account for the Organization will be used.\n",
        "type": "http",
        "scheme": "bearer"
      },
      "authWithoutAccount": {
        "description": "To generate bearer tokens and learn more about Spot by Flexera\nauthentication, see [token creation](https://docs-spot.flexera.com/administration/api/create-api-token).\n",
        "type": "http",
        "scheme": "bearer"
      }
    }
  },
  "tags": [
    {
      "name": "Elastigroup AWS",
      "description": "Elastigroup for Amazon Web Services (AWS)",
      "externalDocs": {
        "description": "Elastigroup Concepts and Tutorials",
        "url": "https://docs.flexera.com/spot/elastigroup/"
      }
    },
    {
      "name": "Elastigroup Azure Spot VMs",
      "description": "Elastigroup for Microsoft Azure",
      "externalDocs": {
        "description": "Elastigroup Concepts and Tutorials",
        "url": "https://docs.flexera.com/spot/elastigroup/"
      }
    },
    {
      "name": "Elastigroup GCP",
      "description": "Elastigroup for Google Cloud",
      "externalDocs": {
        "description": "Elastigroup Concepts and Tutorials",
        "url": "https://docs.flexera.com/spot/elastigroup/"
      }
    },
    {
      "name": "Elastigroup Azure Stateful",
      "description": "Elastigroup for Microsoft Azure Stateful Node",
      "externalDocs": {
        "description": "Elastigroup Concepts and Tutorials",
        "url": "https://docs.flexera.com/spot/elastigroup/"
      }
    },
    {
      "name": "Ocean AWS",
      "description": "Ocean - Serverless containers for Amazon Web Services (AWS)",
      "externalDocs": {
        "description": "Ocean Concepts and Tutorials",
        "url": "https://docs.flexera.com/spot/ocean/"
      }
    },
    {
      "name": "Ocean ECS",
      "description": "Ocean - Serverless containers for Amazon Elastic Container Service (ECS)",
      "externalDocs": {
        "description": "Ocean Concepts and Tutorials",
        "url": "https://docs.flexera.com/spot/ocean/"
      }
    },
    {
      "name": "Ocean GKE",
      "description": "Ocean - Serverless containers for Google Kubernetes Engine",
      "externalDocs": {
        "description": "Ocean Concepts and Tutorials",
        "url": "https://docs.flexera.com/spot/ocean/"
      }
    },
    {
      "name": "Ocean AKS",
      "description": "Ocean - Serverless containers for Azure Kubernetes Service",
      "externalDocs": {
        "description": "Ocean Concepts and Tutorials",
        "url": "https://docs.flexera.com/spot/ocean/"
      }
    },
    {
      "name": "Ocean Insights",
      "description": "Insights allows Spot users on AWS to connect a Kubernetes cluster and within minutes get the cluster analyzed with insights\nabout the current state of infrastructure in the cluster, and the potential effect of migrating the specific cluster into Ocean.\nThrough its powerful features, Ocean presents significant opportunities for infrastructure optimization and automation, which are on display in the Insights console.\nConnected to Kubernetes clusters and running a continuous analysis, Ocean Insights delivers a holistic picture of your cluster and workloads behavior, from expected cloud costs and resource utilization.\nThrough a simple UI, users will see a breakdown of potential savings when they first connect to Ocean Insights.\n",
      "externalDocs": {
        "description": "Ocean Insights",
        "url": "https://docs.flexera.com/spot/ocean-insights/"
      }
    },
    {
      "name": "Ocean Automatic Rightsizing",
      "description": "New Automatic Rightsizing version available for EKS and AKS only.\n\nIf you wish to learn more about it reach out to our support team.\n"
    },
    {
      "name": "EMR Scaler",
      "description": "AWS EMR Scaler",
      "externalDocs": {
        "description": "AWS EMR Scaler Concepts and Tutorials",
        "url": "https://docs.flexera.com/spot/elastigroup/tools-integrations/elastic-mapreduce/"
      }
    },
    {
      "name": "Stateful Node AWS",
      "description": "Stateful Node is a Spot solution for launching and managing a single compute instance.\nOn the AWS cloud, for a standard single instance workload, an On-Demand EC2 instance is launched.\nThe instance is expected to be highly available, easily manageable, and integrate well with additional services and monitoring tools.\nFor more information please review the concepts section.\n",
      "externalDocs": {
        "description": "Stateful Node for AWS Concepts and Tutorials",
        "url": "https://docs.flexera.com/spot/managed-instance/"
      }
    },
    {
      "name": "Create an API Token",
      "description": "* Please log in to the [Spot Console](https://console.spotinst.com) to create an API token. Navigate to `Settings` and select `API`.\n* The [Spot Console](https://console.spotinst.com) provides both permanent and temporary tokens. Select your preferred token type and click `Generate Token`.\n* Give your token a name and click `Generate`.\n> NOTE: Remember to keep your tokens secret. Treat them just like passwords! They act on your behalf when interacting with the API. Do not share your personal access tokens with anyone outside your organization. Do not hard-code them into your programs. Instead, opt to use them as environment variables. Please contact our support if you think your token has been compromised.\n",
      "externalDocs": {
        "url": "https://docs.flexera.com/spot/administration/api/create-api-token"
      }
    },
    {
      "name": "Whitelist IPs",
      "description": "* Spot permit list IPs are required for integrations to work as expected. The IP needs to be permit-listed on the primary nodes of Rancher, HCS, Kubernetes, Chef, Nomad, and Docker Swarm. Make sure your permit list IPs are always up-to-date with the latest list.\n*  34.226.61.134/32\n",
      "externalDocs": {
        "url": "https://docs.flexera.com/spot/administration/api/whitelist-ips"
      }
    },
    {
      "name": "Spot Policy",
      "description": "Spots Latest Policy for AWS.\n* You can find and modify your Spot Policy in the AWS IAM Console.\n* For additional information and guide please see Updating the Spot Policy\n* You can restrict your Spot Policy using custom AWS IAM Condition Statements using this Guide.\n*  Make sure your policy is always up-to-date with the latest JSON\n",
      "externalDocs": {
        "url": "https://docs.flexera.com/spot/administration/api/spot-policy-in-aws"
      }
    },
    {
      "name": "Audit Service",
      "externalDocs": {
        "url": "https://spec.dev.spot.io/#tag/Audit-Service"
      }
    },
    {
      "name": "Health Check Service",
      "externalDocs": {
        "url": "https://docs.flexera.com/spot/elastigroup/tools-integrations/custom-health-check-service"
      }
    },
    {
      "name": "Notification Subscription Service",
      "description": "The Spot notification service enables you a fast, flexible, fully managed push notification service that lets you know about major events that happened in your Spot account.ֿ Spot Notifications makes it simple and cost-effective to get push notifications to your email address, HTTP, HTTPS or AWS SNS (Simple Notifications Service).\n\n> **Note**: This service is deprecated. Use the\n[Notification Center Service](https://spec.dev.spot.io/#tag/Notification-Center-Service).\n"
    },
    {
      "name": "Notification Center Service",
      "description": "Manage your compute notification policies. You can create new policies, apply updates, or delete the policy entirely.\n"
    },
    {
      "name": "Insights Service"
    },
    {
      "name": "Organizations",
      "description": "Manage your Spot organizations.",
      "externalDocs": {
        "description": "Organizations Documentation",
        "url": "https://docs.flexera.com/spot/administration/"
      }
    },
    {
      "name": "Accounts",
      "description": "Manage your Spot accounts.",
      "externalDocs": {
        "description": "Accounts Documentation",
        "url": "https://docs.flexera.com/spot/administration/"
      }
    }
  ],
  "x-tagGroups": [
    {
      "name": "Administration",
      "x-folders": [
        "administration/",
        "beci/"
      ],
      "tags": [
        "Organizations",
        "Accounts"
      ]
    },
    {
      "name": "Ocean AWS",
      "x-folders": [
        "ocean/aws/",
        "ocean/commons/"
      ],
      "tags": [
        "Ocean AWS"
      ]
    },
    {
      "name": "Ocean ECS",
      "x-folders": [
        "ocean/ecs/"
      ],
      "tags": [
        "Ocean ECS"
      ]
    },
    {
      "name": "Ocean GKE",
      "x-folders": [
        "ocean/gke/"
      ],
      "tags": [
        "Ocean GKE"
      ]
    },
    {
      "name": "Ocean AKS",
      "x-folders": [
        "ocean/aks/",
        "ocean/aksV2/"
      ],
      "tags": [
        "Ocean AKS"
      ]
    },
    {
      "name": "Ocean Insights",
      "x-folders": [
        "ocean/oceanInsights/"
      ],
      "tags": [
        "Ocean Insights"
      ]
    },
    {
      "name": "Ocean Automatic Rightsizing",
      "x-folders": [
        "ocean/rightsizing/"
      ],
      "tags": [
        "Ocean Automatic Rightsizing"
      ]
    },
    {
      "name": "Elastigroup",
      "x-folders": [
        "elastigroup/"
      ],
      "tags": [
        "Elastigroup AWS",
        "Elastigroup AWS EMR Scaler",
        "Elastigroup GCP",
        "Elastigroup Azure Spot VMs",
        "Elastigroup Azure Stateful"
      ]
    },
    {
      "name": "Stateful Node",
      "x-folders": [
        "managedInstance/"
      ],
      "tags": [
        "Stateful Node AWS"
      ]
    },
    {
      "name": "Services",
      "x-folders": [
        "notificationCenter/",
        "notificationSubscription/",
        "insights/",
        "healthCheck/",
        "audit/"
      ],
      "tags": [
        "Audit Service",
        "Health Check Service",
        "Notification Center Service",
        "Insights Service",
        "Notification Subscription Service"
      ]
    },
    {
      "name": "Spot Connect",
      "x-folders": [
        "connect/"
      ],
      "tags": [
        "Connect Executions",
        "Connect Schedules",
        "Connect Settings",
        "Connect Targets",
        "Connect Workflows",
        "Connect Workspaces"
      ]
    },
    {
      "name": "Spot Security",
      "x-folders": [
        "security/"
      ],
      "tags": [
        "Compliance",
        "Misconfiguration",
        "Assets"
      ]
    },
    {
      "name": "Flexera Integration",
      "x-folders": [
        "ccoUsageExporter/"
      ],
      "tags": [
        "Flexera CCO Integration"
      ]
    }
  ],
  "paths": {
    "/aws/ec2/group": {
      "summary": "Elastigroups for AWS",
      "post": {
        "summary": "Create Elastigroup",
        "description": "Create a new AWS Elastigroup.\n\nThere are several third Party Integrations available, which can be activated based on your configuration, such as:\n* [Rancher Elastigroup](https://docs.flexera.com/spot/elastigroup/tools-integrations/rancher)\n* [Route53 Elastigroup](https://docs.flexera.com/spot/elastigroup/tools-integrations/route53)\n* [DockerSwarm Elastigroup](https://docs.flexera.com/spot/elastigroup/tools-integrations/docker-swarm)\n* [ECS Elastigroup](https://docs.flexera.com/spot/elastigroup/features/amazon-ecs/elastigroup-for-ecs)\n* [Beanstalk Elastigroup](https://docs.flexera.com/spot/elastigroup/tools-integrations/elastic-beanstalk)\n\n\n  You can create a beanstalk elastigroup with the following steps:\n  * [Get the beanstalk configuration](https://spec.dev.spot.io/#operation/elastigroupAwsGetBeanstalkConfiguration) to JSON format\n  * Modify required parameters and post the JSON as a body to create a new elastigroup\n",
        "operationId": "elastigroupAwsCreate",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "AWS Elastigroup",
                    "required": [
                      "group"
                    ],
                    "properties": {
                      "group": {
                        "type": "object",
                        "description": "Elastigroup Configuration",
                        "required": [
                          "name",
                          "capacity",
                          "region",
                          "strategy",
                          "compute"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "AWS Elastigroup Name\n",
                            "example": "my-Elastigroup"
                          },
                          "description": {
                            "type": "string",
                            "description": "Describe your AWS Elastigroup\n",
                            "example": "This Elastigroup is used for Development"
                          },
                          "region": {
                            "type": "string",
                            "description": "The AWS region your group will be created in.\n This parameter is required if you specify subnets (through compute.subnetIds).\n This parameter is optional if you specify Availability Zones (through compute.availabilityZones).\n",
                            "example": "use-east-1"
                          },
                          "capacity": {
                            "description": "Capacity Configuration",
                            "type": "object",
                            "title": "Elastigroup Capacity",
                            "required": [
                              "target",
                              "minimum",
                              "maximum",
                              "unit"
                            ],
                            "properties": {
                              "target": {
                                "type": "integer",
                                "description": "The number of instances to launch\n",
                                "example": 1
                              },
                              "minimum": {
                                "type": "integer",
                                "description": "The lower limit number of instances that you can scale down to\n",
                                "example": 0
                              },
                              "maximum": {
                                "type": "integer",
                                "description": "The upper limit number of instances that you can scale up to\n",
                                "example": 10
                              },
                              "unit": {
                                "type": "string",
                                "enum": [
                                  "instance",
                                  "weight"
                                ],
                                "description": "The capacity unit to launch instances by.\nNote: for groups with integration to K8S / ECS weight option is not supported.\n",
                                "example": "instance"
                              }
                            }
                          },
                          "strategy": {
                            "type": "object",
                            "title": "Elastigroup Strategy",
                            "description": "Strategy",
                            "required": [
                              "availabilityVsCost"
                            ],
                            "properties": {
                              "risk": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 100,
                                "example": 100,
                                "default": 0,
                                "description": "The percentage of Elastigroup that will run with spot market capacity\n"
                              },
                              "onDemandCount": {
                                "type": "integer",
                                "minimum": 0,
                                "example": 0,
                                "description": "Minimum number of instances that will always be on-demand\n"
                              },
                              "availabilityVsCost": {
                                "type": "string",
                                "enum": [
                                  "costOriented",
                                  "availabilityOriented",
                                  "balanced",
                                  "cheapest",
                                  "equalAzDistribution"
                                ],
                                "default": "balanced",
                                "description": "How Elastigroup determines which instances to add and replace.\n(please read this article before using [Equal AZ Instance Distribution](https://docs.flexera.com/spot/elastigroup-for-aws/concepts/general-concepts/equal-az-distribution))\n"
                              },
                              "fallbackToOd": {
                                "type": "boolean",
                                "default": true,
                                "example": true,
                                "description": "When set to `true` Elastigroup will launch On Demand instances if no spot market is available\n"
                              },
                              "considerODPricing": {
                                "type": "boolean",
                                "default": false,
                                "example": false,
                                "description": "When the value is set to `true`, Elastigroup will prioritize launching On-Demand instances if they are found to be more cost-effective than available Spot markets.\n"
                              },
                              "utilizeReservedInstances": {
                                "type": "boolean",
                                "description": "In case of any available Reserved Instances, Elastigroup will utilize them before purchasing Spot instances\n",
                                "example": false
                              },
                              "utilizeCommitments": {
                                "type": "boolean",
                                "description": "If there are available Reserved Instances or Savings Plans, Elastigroup will utilize them before using Spot instances\n",
                                "example": false
                              },
                              "restrictSingleAz": {
                                "type": "boolean",
                                "description": "Elastigroup will automatically scale your instances in the most available and cost efficient availability zone. Every evaluation will be done when there are no active instances in the group.\n",
                                "example": false
                              },
                              "drainingTimeout": {
                                "type": "integer",
                                "example": 120,
                                "description": "The time in seconds to allow the instance be drained from incoming TCP connections and detached from ELB before terminating it, during a scale down operation\n"
                              },
                              "maxReplacementsPercentage": {
                                "type": "integer",
                                "description": "The percentage of active instances that can be replaced in parallel.\nThis is used to prevent a large number of instances from being replaced at once.\n",
                                "example": 15
                              },
                              "signals": {
                                "type": "array",
                                "description": "The signals defined for this group. For more information refer the below article: [Signals](https://docs.flexera.com/spot/elastigroup-for-aws/concepts/compute-concepts/using-signals-in-elastigroups)\n",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "name": {
                                      "type": "string",
                                      "description": "The name of the signal defined for the group.\n",
                                      "enum": [
                                        "INSTANCE_READY",
                                        "INSTANCE_READY_TO_SHUTDOWN"
                                      ]
                                    },
                                    "timeout": {
                                      "type": "integer",
                                      "minimum": 60,
                                      "maximum": 1800,
                                      "description": "The timeout in seconds to hold the instance until a signal is sent.\nIf no signal is sent the instance will be replaced (INSTANCE_READY) or we will terminate the instance (INSTANCE_READY_TO_SHUTDOWN) after the timeout.\n",
                                      "default": 1800,
                                      "example": 120
                                    }
                                  }
                                }
                              },
                              "persistence": {
                                "type": "array",
                                "description": "You can register persistence (Stateful) recovery arguments\n",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "shouldPersistPrivateIp": {
                                      "type": "boolean",
                                      "description": "Should the instance maintain its private IP\n",
                                      "example": true
                                    },
                                    "shouldPersistRootDevice": {
                                      "type": "boolean",
                                      "description": "Should the instance maintain its root device volumes\n",
                                      "example": true
                                    },
                                    "shouldPersistBlockDevices": {
                                      "type": "boolean",
                                      "description": "Should the instance maintain its Data volumes\n",
                                      "example": true
                                    },
                                    "blockDevicesMode": {
                                      "type": "string",
                                      "description": "Determine the way we attach the data volumes to the data devices\n",
                                      "enum": [
                                        "reattach",
                                        "onLaunch"
                                      ],
                                      "example": "reattach"
                                    }
                                  }
                                }
                              },
                              "revertToSpot": {
                                "type": "object",
                                "description": "Hold settings for strategy correction - replacing On-Demand for Spot instances\n",
                                "properties": {
                                  "performAt": {
                                    "type": "string",
                                    "description": "Settings for maintenance strategy - possible values: timeWindow, never, always.\nperformAt of type: 'never' OR 'timeWindow' can only be applied to groups with \"availabilityOriented\" OR groups with \"persistence\",\nother groups allow either 'always' type or nothing which also means always.\n",
                                    "enum": [
                                      "never",
                                      "always",
                                      "timeWindow"
                                    ],
                                    "example": "timeWindow",
                                    "default": "always"
                                  },
                                  "timeWindows": {
                                    "type": "array",
                                    "description": "When performAt is 'timeWindow': must specify a list of 'timeWindows' with at least one time window Each string is in the format of - ddd:hh:mm-ddd:hh:mm\nddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat\nhh = hour 24 = 0 -23\nmm = minute = 0 - 59\n",
                                    "items": {
                                      "type": "string",
                                      "example": "Mon:03:00-Wed:02:30"
                                    }
                                  }
                                }
                              },
                              "scalingStrategy": {
                                "type": "object",
                                "description": "Set termination policy\n",
                                "properties": {
                                  "terminationPolicy": {
                                    "type": "string",
                                    "enum": [
                                      "default",
                                      "newestInstance"
                                    ],
                                    "example": "default"
                                  }
                                }
                              }
                            }
                          },
                          "compute": {
                            "type": "object",
                            "title": "Elastigroup Compute",
                            "required": [
                              "availabilityZones",
                              "launchSpecification"
                            ],
                            "properties": {
                              "product": {
                                "type": "string",
                                "description": "Operation system type.\n",
                                "enum": [
                                  "Linux/UNIX (Amazon VPC)",
                                  "SUSE Linux (Amazon VPC)",
                                  "Windows (Amazon VPC)",
                                  "Red Hat Enterprise Linux (Amazon VPC)"
                                ],
                                "example": "Linux/UNIX"
                              },
                              "elasticIps": {
                                "type": "array",
                                "description": "List of ElasticIPs Allocation Ids to associate to the group instances\n",
                                "items": {
                                  "type": "string",
                                  "example": "eipalloc-9d4e16f8"
                                }
                              },
                              "privateIps": {
                                "type": "array",
                                "description": "List of Private IPs to associate to the group instances.\nPlease note: This setting will only apply if rategy.persistence.shouldPersistPrivateIp is set to true.\n",
                                "items": {
                                  "type": "string",
                                  "default": "172.1.1.0"
                                }
                              },
                              "instanceTypes": {
                                "type": "object",
                                "description": "Instance Types\n",
                                "properties": {
                                  "ondemand": {
                                    "type": "string",
                                    "description": "Available on demand instance type.\nNote: Either ondemand or onDemandTypes must be defined, but not both.\n",
                                    "example": "m3.medium"
                                  },
                                  "onDemandTypes": {
                                    "type": "array",
                                    "description": "Available on demand instance types.\nNote: Either ondemand or onDemandTypes must be defined, but not both.\n",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "c3.large",
                                        "c4.large",
                                        "m3.large",
                                        "r3.large"
                                      ]
                                    }
                                  },
                                  "spot": {
                                    "type": "array",
                                    "description": "Available Spot Instance types.  \nNote: Cannot be defined if 'resourceRequirements' is defined.\n",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "c3.large",
                                        "c4.large",
                                        "m3.large",
                                        "r3.large"
                                      ]
                                    }
                                  },
                                  "resourceRequirements": {
                                    "type": "object",
                                    "title": "Resource Requirements",
                                    "description": "Required instance attributes. Instance types will be selected based on these requirements.\n",
                                    "required": [
                                      "requiredVCpu",
                                      "requiredMemory"
                                    ],
                                    "properties": {
                                      "requiredGpu": {
                                        "type": "object",
                                        "description": "Required instance GPU",
                                        "properties": {
                                          "minimum": {
                                            "type": "integer",
                                            "minimum": 1
                                          },
                                          "maximum": {
                                            "type": "integer",
                                            "maximum": 16
                                          }
                                        }
                                      },
                                      "requiredVCpu": {
                                        "type": "object",
                                        "description": "Required instance vCPU",
                                        "properties": {
                                          "minimum": {
                                            "type": "integer",
                                            "minimum": 1
                                          },
                                          "maximum": {
                                            "type": "integer",
                                            "maximum": 64
                                          }
                                        }
                                      },
                                      "requiredMemory": {
                                        "type": "object",
                                        "description": "Required instance memory (GiB)",
                                        "properties": {
                                          "minimum": {
                                            "type": "integer",
                                            "minimum": 1
                                          },
                                          "maximum": {
                                            "type": "integer",
                                            "maximum": 512
                                          }
                                        }
                                      },
                                      "excludedInstanceTypes": {
                                        "type": "array",
                                        "description": "Instance types to exclude",
                                        "items": {
                                          "type": "string",
                                          "example": [
                                            "c4.large"
                                          ]
                                        }
                                      },
                                      "excludedInstanceFamilies": {
                                        "type": "array",
                                        "description": "Instance families to exclude",
                                        "items": {
                                          "type": "string",
                                          "example": [
                                            "A",
                                            "C",
                                            "D"
                                          ]
                                        }
                                      },
                                      "excludedInstanceGenerations": {
                                        "type": "array",
                                        "description": "Instance generations to exclude",
                                        "items": {
                                          "type": "string",
                                          "example": [
                                            "1",
                                            "2",
                                            "3"
                                          ]
                                        }
                                      }
                                    }
                                  },
                                  "preferredSpot": {
                                    "type": "array",
                                    "description": "Prioritized subset of spot instance types. The list must be a subset of the selected spot instance \ntypes or meet the resource requirements if defined.\n",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "c4.large"
                                      ]
                                    }
                                  },
                                  "weights": {
                                    "type": "array",
                                    "description": "Custom weight for each instance type (only valid in weight capacity unit)\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "instanceType": {
                                          "type": "string",
                                          "description": "The instance type to customize its weight\n",
                                          "example": "c4.large"
                                        },
                                        "weightedCapacity": {
                                          "type": "integer",
                                          "description": "The weight\n",
                                          "example": 8
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "subnetIds": {
                                "type": "array",
                                "description": "A comma-separated list of subnet identifiers for your group.\nWhen this parameter is set, compute.availabilityZones should be left unused.\n",
                                "items": {
                                  "type": "string",
                                  "example": [
                                    "subnet-4c1d1538",
                                    "subnet-2791bb61",
                                    "subnet-703a6f58",
                                    "subnet-c62846fc"
                                  ]
                                }
                              },
                              "availabilityZones": {
                                "type": "array",
                                "description": "One or more availability Zones for the group.\nWhen this parameter is set, compute.subnetIds should be left unused.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "name"
                                  ],
                                  "properties": {
                                    "name": {
                                      "type": "string",
                                      "description": "The Availability Zone name\n",
                                      "example": "us-west-2a"
                                    },
                                    "subnetIds": {
                                      "type": "array",
                                      "description": "A comma-separated list of subnet identifiers for your group.\n",
                                      "items": {
                                        "type": "string",
                                        "example": [
                                          "subnet-4333093a"
                                        ]
                                      }
                                    },
                                    "placementGroupName": {
                                      "type": "string",
                                      "description": "specify a Placement Group name, the instances will be launched in the Placement Group for the AZ.\n"
                                    }
                                  }
                                }
                              },
                              "preferredAvailabilityZones": {
                                "type": "array",
                                "description": "The AZs to prioritize when launching Spot instances.\nIf no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs.\n* Must be a sublist of compute.AvailabilityZones\n* strategy.availabilityVsCost must not be equalAzDistribution\n",
                                "items": {
                                  "type": "string",
                                  "example": [
                                    "us-east-1a",
                                    "us-east-1b"
                                  ]
                                }
                              },
                              "launchSpecification": {
                                "type": "object",
                                "required": [
                                  "securityGroupIds",
                                  "monitoring"
                                ],
                                "properties": {
                                  "creditSpecification": {
                                    "type": "object",
                                    "description": "creditSpecification is a parameter that indicates in what mode t2/t3 instances will be launched with. It consists of one key: cpuCredits (String)\n",
                                    "properties": {
                                      "cpuCredits": {
                                        "type": "string",
                                        "enum": [
                                          "unlimited",
                                          "standard"
                                        ],
                                        "example": "unlimited"
                                      }
                                    }
                                  },
                                  "loadBalancersConfig": {
                                    "type": "object",
                                    "description": "Elastic Load Balancers configurations\n",
                                    "properties": {
                                      "loadBalancers": {
                                        "type": "array",
                                        "description": "List of classic load balancers and/or application load balancer target groups\n",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "name": {
                                              "type": "string",
                                              "description": "The AWS resource name. Required for Classic Load Balancer. Optional for Application Load Balancer.\n",
                                              "example": "MyTargetGroup"
                                            },
                                            "arn": {
                                              "type": "string",
                                              "description": "The AWS resource ARN (Required only for ALB target groups)\n",
                                              "example": "arn:aws:elasticloadbalancing:us-west-2:922761411234:targetgroup/MyTargetGroup/1fe63217f8ff1234"
                                            },
                                            "type": {
                                              "type": "string",
                                              "description": "The resource type.\n",
                                              "enum": [
                                                "CLASSIC",
                                                "TARGET_GROUP"
                                              ],
                                              "example": "TARGET_GROUP"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "itf": {
                                    "title": "Intelligent Traffic Flow (ITF) Configuration",
                                    "type": "object",
                                    "description": "Contains the configuration details of Intelligent Traffic Flow (ITF).\n",
                                    "properties": {
                                      "fixedTargetGroups": {
                                        "type": "boolean",
                                        "description": "Boolean to control whether to keep the set of target groups fixed. When set to true, all target groups will be created in advance upon create/update group, and will not be deleted even when not being used anymore.\n",
                                        "default": false,
                                        "example": false
                                      },
                                      "weightStrategy": {
                                        "type": "string",
                                        "description": "Distribution strategy (either 'vcpu' or 'custom'). 'Custom' strategy can be set only when the group is configured with custom weights.\n",
                                        "enum": [
                                          "vcpu",
                                          "custom"
                                        ],
                                        "default": "vcpu",
                                        "example": "custom"
                                      },
                                      "migrationHealthinessThreshold": {
                                        "type": "integer",
                                        "description": "Threshold for the minimum healthiness level of the target groups that is needed before activating the ITF rules. Integer representing the percentage of healthy instances within the target groups. Valid values: integer between 0-100.\n",
                                        "default": 50,
                                        "example": 80
                                      },
                                      "loadBalancers": {
                                        "type": "array",
                                        "description": "The load balancer associated with the ITF. Array with a single element.\n",
                                        "items": {
                                          "title": "ITF Load Balancer Configuration",
                                          "type": "object",
                                          "description": "Contains the configuration details of an ITF load balancer.\n",
                                          "required": [
                                            "loadBalancerArn",
                                            "listenerRules"
                                          ],
                                          "properties": {
                                            "loadBalancerArn": {
                                              "type": "string",
                                              "description": "Identifier of the load balancer in AWS.\n",
                                              "example": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188"
                                            },
                                            "listenerRules": {
                                              "type": "array",
                                              "description": "The listener rules that should be maintained by ITF. Array with a minimum of 1 element.\n",
                                              "items": {
                                                "title": "ITF Listener Rule Configuration",
                                                "type": "object",
                                                "description": "Contains the configuration details of an ITF listener rule.\n",
                                                "required": [
                                                  "ruleArn"
                                                ],
                                                "properties": {
                                                  "ruleArn": {
                                                    "type": "string",
                                                    "description": "Identifier of the listener rule in AWS.\n",
                                                    "example": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/0123456789012345/1234567890123456/234567890123456"
                                                  },
                                                  "staticTargetGroups": {
                                                    "type": "array",
                                                    "description": "Listener rule target group whose percentage should remain static (unchanged). Array with a single element.",
                                                    "items": {
                                                      "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/properties/group/properties/compute/properties/launchSpecification/properties/itf/properties/loadBalancers/items/properties/defaultStaticTargetGroups/items"
                                                    },
                                                    "example": [
                                                      {
                                                        "arn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-targets/73e2d6bc24d8a068",
                                                        "percentage": 0.5
                                                      }
                                                    ]
                                                  }
                                                }
                                              }
                                            },
                                            "defaultStaticTargetGroups": {
                                              "type": "array",
                                              "description": "A default static target group on the rule. Array with a single element.",
                                              "items": {
                                                "title": "ITF Static Target Group Configuration",
                                                "type": "object",
                                                "description": "Contains the configuration details of an ITF static target group.\n",
                                                "required": [
                                                  "arn",
                                                  "percentage"
                                                ],
                                                "properties": {
                                                  "arn": {
                                                    "type": "string",
                                                    "description": "Identifier of the target group in AWS.\n",
                                                    "example": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/blue-targets/73e2d6bc24d8a067"
                                                  },
                                                  "percentage": {
                                                    "type": "number",
                                                    "description": "A float number in the range of 0.1-10.\n",
                                                    "example": 0.4
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      },
                                      "targetGroupConfig": {
                                        "title": "ITF Target Group Configuration",
                                        "type": "object",
                                        "description": "Contains the configuration details of an ITF target group.\n",
                                        "allOf": [
                                          {
                                            "type": "object",
                                            "properties": {
                                              "vpcId": {
                                                "type": "string",
                                                "description": "The ID of the AWS VPC for the targets. Valid values: any string which is not empty or null.\n",
                                                "example": "vpc-0410a20ec1702a537"
                                              },
                                              "healthCheckPath": {
                                                "type": "string",
                                                "description": "The destination for health checks on the targets.\n",
                                                "example": "/index.html"
                                              },
                                              "healthCheckProtocol": {
                                                "type": "string",
                                                "description": "HTTP, HTTPS are already listed under the enum below, no need to repeat.\n",
                                                "enum": [
                                                  "HTTP",
                                                  "HTTPS"
                                                ],
                                                "default": "HTTP",
                                                "example": "HTTP"
                                              },
                                              "healthCheckPort": {
                                                "type": "string",
                                                "description": "The port to use to connect with the target. Valid values: 1-65535 or \"traffic-port\".\n",
                                                "default": "80",
                                                "example": "traffic-port"
                                              },
                                              "healthCheckIntervalSeconds": {
                                                "type": "integer",
                                                "description": "The approximate amount of time, in seconds, between health checks of an individual target. Valid values: integer between 5-300.\n",
                                                "default": 30,
                                                "example": 40
                                              },
                                              "healthCheckTimeoutSeconds": {
                                                "type": "integer",
                                                "description": "The amount of time, in seconds, during which no response means a failed health check. Valid values: integer between 2-120.\n",
                                                "default": 5,
                                                "example": 20
                                              },
                                              "healthyThresholdCount": {
                                                "type": "integer",
                                                "description": "The number of consecutive health checks successes required before considering an unhealthy target healthy. Valid values: integer between 2-10.\n",
                                                "default": 5,
                                                "example": 3
                                              },
                                              "unhealthyThresholdCount": {
                                                "type": "integer",
                                                "description": "The number of consecutive health check failures required before considering the target unhealthy. Valid values: integer between 2-10.\n",
                                                "default": 2,
                                                "example": 4
                                              },
                                              "port": {
                                                "type": "integer",
                                                "description": "The port on which the targets are listening. Not used if the target is a Lambda function. Valid values: integer between 1-65535.\n",
                                                "example": 80
                                              },
                                              "protocol": {
                                                "type": "string",
                                                "description": "The protocol to use for routing traffic to the targets.\n",
                                                "enum": [
                                                  "HTTP",
                                                  "HTTPS"
                                                ],
                                                "example": "HTTP"
                                              },
                                              "protocolVersion": {
                                                "type": "string",
                                                "description": "The protocol version.\n",
                                                "default": "HTTP1",
                                                "enum": [
                                                  "GRPC",
                                                  "HTTP1",
                                                  "HTTP2"
                                                ],
                                                "example": "HTTP1"
                                              },
                                              "tags": {
                                                "type": "array",
                                                "description": "The tags to assigned with the created target groups\n",
                                                "default": [],
                                                "example": [
                                                  {
                                                    "creator": "John Doe"
                                                  }
                                                ],
                                                "items": {
                                                  "type": "object",
                                                  "properties": {
                                                    "tagKey": {
                                                      "type": "string",
                                                      "description": "The tag's key\n",
                                                      "example": "Creator"
                                                    },
                                                    "tagValue": {
                                                      "type": "string",
                                                      "description": "The tag's value\n",
                                                      "example": "John Doe"
                                                    }
                                                  }
                                                }
                                              },
                                              "matcher": {
                                                "type": "object",
                                                "description": "Matcher to use when checking for a successful response from a target group. One of 'httpCode' or 'grpcCode' is required.\n",
                                                "default": {
                                                  "httpCode": "200"
                                                },
                                                "properties": {
                                                  "httpCode": {
                                                    "type": "string",
                                                    "description": "You can specify values between 200 and 499, and the default value is 200. You can specify multiple values (for example, “200,202”) or a range of values (for example, “200-299”).\n",
                                                    "default": "200",
                                                    "example": "200"
                                                  },
                                                  "grpcCode": {
                                                    "type": "string",
                                                    "description": "You can specify values between 0 and 99. You can specify multiple values (for example, “0,1”) or a range of values (for example, “0-5”). The default value is 12.\n",
                                                    "default": "12",
                                                    "example": "4"
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          {
                                            "required": [
                                              "vpcId",
                                              "healthCheckPath",
                                              "port",
                                              "protocol"
                                            ]
                                          }
                                        ]
                                      }
                                    },
                                    "required": [
                                      "loadBalancers",
                                      "targetGroupConfig"
                                    ]
                                  },
                                  "healthCheckType": {
                                    "type": "string",
                                    "description": "The service to use for the health check.\n",
                                    "enum": [
                                      "ELB",
                                      "HCS",
                                      "TARGET_GROUP",
                                      "ECS_CLUSTER_INSTANCE",
                                      "EC2",
                                      "OPSWORKS",
                                      "K8S_NODE",
                                      "NOMAD_NODE"
                                    ],
                                    "example": "EC2"
                                  },
                                  "healthCheckGracePeriod": {
                                    "type": "integer",
                                    "description": "The amount of time, in seconds, after the instance has launched to starts and check its health.\n",
                                    "default": 300,
                                    "example": 600
                                  },
                                  "healthCheckUnhealthyDurationBeforeReplacement": {
                                    "type": "integer",
                                    "description": "The amount of time, in seconds, an existing instance should remain active after becoming unhealthy.\nAfter the set time out the instance will be replaced\n",
                                    "example": 60
                                  },
                                  "securityGroupIds": {
                                    "type": "array",
                                    "description": "One or more security group IDs. In case of update it will override the existing Security Group with the new given array\n",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "sg-0dfc2c8760df6fec7"
                                      ]
                                    }
                                  },
                                  "monitoring": {
                                    "type": "boolean",
                                    "description": "Describes whether instance Enhanced Monitoring is enabled\n",
                                    "example": false
                                  },
                                  "ebsOptimized": {
                                    "type": "boolean",
                                    "description": "Enable EBS optimization for supported instance which is not enabled by default.\nNote - additional charges will be applied.\n",
                                    "example": false
                                  },
                                  "imageId": {
                                    "type": "string",
                                    "description": "The ID of the image used to launch the instance.\n* The following instance types are supported by HVM image: M3, M4, C3, C4, D2, G2, R3, CC2, CC1, CG1, CR1.\n* The following instance types are supported by PV image: M1, M2, M3, C1, C3.\n* In case of conflict between Instance type to image type, an error message will be returned\n",
                                    "example": "ami-01e24be29428c15b2"
                                  },
                                  "images": {
                                    "type": "array",
                                    "description": "An array of image objects. <br>\nElastigroup can be configured with either imageId or images, but not both. <br>\n* Valid values: null, or an array with at least 1 element.\n* Multiple AMIs aren't allowed with stateful groups / Stateful Node / Ocean\n  or with the following third-party integrations: ECS / Nomad / Docker Swarm / Kubernetes\n",
                                    "items": {
                                      "type": "object",
                                      "title": "Image object, containing the id of the image used to launch the instance.",
                                      "required": [
                                        "id"
                                      ],
                                      "properties": {
                                        "id": {
                                          "type": "string",
                                          "description": "Identifier of the image in AWS. Valid values: any string which is not empty or null.\n",
                                          "example": "ami-123456789"
                                        }
                                      }
                                    }
                                  },
                                  "keyPair": {
                                    "type": "string",
                                    "description": "Specify a Key Pair to attach to the instances\n",
                                    "example": "labs-oregon"
                                  },
                                  "blockDeviceMappings": {
                                    "type": "array",
                                    "description": "Array list of block devices that are exposed to the instance, You can specify virtual devices and EBS volumes.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "deviceName": {
                                          "type": "string",
                                          "description": "Set device name\n",
                                          "example": "/dev/xvdcz"
                                        },
                                        "ebs": {
                                          "type": "object",
                                          "description": "Set EBS properties\n",
                                          "properties": {
                                            "encrypted": {
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "iops": {
                                              "type": "integer",
                                              "minimum": 0,
                                              "description": "Must be greater than or equal to 0\n",
                                              "example": 0
                                            },
                                            "dynamicIops": {
                                              "type": "object",
                                              "description": "Set dynamic IOPS properties. When using this object, you cannot use the 'iops' object. You must use one or the other.\n",
                                              "properties": {
                                                "baseSize": {
                                                  "type": "integer",
                                                  "description": "Initial size for IOPS.\n",
                                                  "example": 50
                                                },
                                                "resource": {
                                                  "type": "string",
                                                  "enum": [
                                                    "CPU",
                                                    "MEMORY"
                                                  ],
                                                  "description": "Type of resource\n",
                                                  "example": "CPU"
                                                },
                                                "sizePerResourceUnit": {
                                                  "type": "integer",
                                                  "description": "Additional size per resource unit (in IOPS). For example: if baseSize=50, and sizePerResourceUnit=20, and an instance with 2 CPU is launched - its IOPS size will be: 90\n",
                                                  "example": 20
                                                }
                                              }
                                            },
                                            "kmsKeyId": {
                                              "type": "string",
                                              "example": "alias/aws/ebs"
                                            },
                                            "snapshotId": {
                                              "type": "string",
                                              "example": "snap-abcdefghi111110"
                                            },
                                            "throughput": {
                                              "type": "integer",
                                              "minimum": 125,
                                              "maximum": 1000,
                                              "example": 125,
                                              "description": "The amount of data transferred to or from a storage device per second, you can use this param just in a case that volumetype=‘gp3’.\n"
                                            },
                                            "volumeType": {
                                              "type": "string",
                                              "description": "Set volume type\n",
                                              "example": "gp2"
                                            },
                                            "deleteOnTermination": {
                                              "type": "boolean",
                                              "description": "Flag to delete the EBS on instance termination\n",
                                              "example": true
                                            },
                                            "volumeSize": {
                                              "type": "integer",
                                              "description": "Set volume size (in GB). When using this property - don't use dynamicVolumeSize.\nVolume size should be greater or equal than the size configured in the AMI\n",
                                              "example": 12
                                            },
                                            "dynamicVolumeSize": {
                                              "type": "object",
                                              "description": "Set dynamic volume size properties. When using this object, you cannot use volumeSize. You must use one or the other.\n",
                                              "properties": {
                                                "baseSize": {
                                                  "type": "integer",
                                                  "description": "Initial size for volume\n",
                                                  "example": 50
                                                },
                                                "resource": {
                                                  "type": "string",
                                                  "example": "CPU"
                                                },
                                                "sizePerResourceUnit": {
                                                  "type": "integer",
                                                  "description": "Additional size per resource unit (in GB). For example: if baseSize=50, and sizePerResourceUnit=20, and an instance with 2 CPU is launched - its disk size will be: 90GB\n",
                                                  "example": 20
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "networkInterfaces": {
                                    "type": "array",
                                    "description": "List of network interfaces in an EC2 instance.\nIf you define network interface, please pay attention to omit these properties from other sections in this JSON and set them here: subnetId - compute.availabilityZones\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "deviceIndex"
                                      ],
                                      "properties": {
                                        "description": {
                                          "type": "string",
                                          "description": "The description of the network interface. Applies only if creating a network interface when launching an instance.\n"
                                        },
                                        "deviceIndex": {
                                          "type": "integer",
                                          "description": "The position of the network interface in the attachment order.\nA primary network interface has a device index of 0.\nIf you specify a network interface when launching an instance, you must specify the device index.\n",
                                          "example": 0
                                        },
                                        "secondaryPrivateIpAddressCount": {
                                          "type": "integer",
                                          "description": "The number of secondary private IPv4 addresses to assign to a network interface.\nWhen you specify a number of secondary IPv4 addresses, Amazon EC2 selects these IP addresses within the subnet's IPv4 CIDR range.\nYou can't specify this option and specify more than one private IP address using privateIpAddresses.\nThe number of IP addresses you can assign to a network interface varies by instance type.\nFor more information, see IP Addresses Per ENI Per Instance Type in the Amazon Virtual Private Cloud User Guide.\n"
                                        },
                                        "associatePublicIpAddress": {
                                          "type": "boolean",
                                          "description": "Indicates whether to assign a public IPv4 address to an instance you launch in a VPC.\nThe public IP address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one.\nYou cannot specify more than one network interface in the request.\nIf launching into a default subnet, the default value is true.\n",
                                          "example": true
                                        },
                                        "deleteOnTermination": {
                                          "type": "boolean",
                                          "description": "If set to true, the interface is deleted when the instance is terminated.\nYou can specify true only if creating a new network interface when launching an instance.\n"
                                        },
                                        "networkInterfaceId": {
                                          "type": "string",
                                          "description": "The ID of the network interface. Used to attach the specified network interface to the instance.\n"
                                        },
                                        "privateIpAddresses": {
                                          "type": "array",
                                          "description": "One or more private IPv4 addresses to assign to the network interface.\nOnly one private IPv4 address can be designated as primary.\nYou cannot specify this option if you're launching more than one instance in a RunInstances request.\n",
                                          "items": {
                                            "type": "object",
                                            "required": [
                                              "privateIpAddress",
                                              "primary"
                                            ],
                                            "properties": {
                                              "privateIpAddress": {
                                                "type": "string",
                                                "description": "The private IPv4 address.\n"
                                              },
                                              "primary": {
                                                "type": "boolean",
                                                "description": "Indicates whether the private IPv4 address is the primary private IPv4 address. Only one IPv4 address can be designated as primary.\n"
                                              }
                                            }
                                          }
                                        },
                                        "subnetId": {
                                          "type": "string",
                                          "description": "The ID of the subnet to associate with the network interface.\nRequired when creating a new Network Interface, and not attaching an existing one via networkInterfaceId.\n"
                                        },
                                        "associateIpv6Address": {
                                          "type": "boolean",
                                          "description": "Indicates whether to assign an IPv6 address. Amazon EC2 chooses the IPv6 addresses from the range of the subnet.\n"
                                        }
                                      }
                                    }
                                  },
                                  "iamRole": {
                                    "type": "object",
                                    "description": "The instance profile iamRole\n",
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "description": "The iamRole name\n",
                                        "example": "my-iamRole"
                                      }
                                    }
                                  },
                                  "userData": {
                                    "type": "string",
                                    "format": "byte",
                                    "description": "The Base64-encoded MIME user data to make available to the instances\n",
                                    "example": "dXNlcmJhc2g2NGVuY29kZWQ="
                                  },
                                  "shutdownScript": {
                                    "type": "string",
                                    "format": "byte",
                                    "description": "The Base64-encoded shutdown script to execute prior to instance termination. For more information please see: [Shutdown Script](https://docs.flexera.com/spot/integration-docs/elastigroup/concepts/compute-concepts/shutdown-scripts/)\n",
                                    "example": "dXNlcmJhc2g2NGVuY29kZWQ="
                                  },
                                  "tags": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "tagKey": {
                                          "type": "string",
                                          "description": "The tag's key\n",
                                          "example": "Creator"
                                        },
                                        "tagValue": {
                                          "type": "string",
                                          "description": "The tag's value\n",
                                          "example": "John Doe"
                                        }
                                      }
                                    }
                                  },
                                  "resourceTagSpecification": {
                                    "type": "object",
                                    "description": "Optional field. User will specified which resources should be tagged with group tags.",
                                    "properties": {
                                      "volumes": {
                                        "type": "object",
                                        "description": "Optional field. Tag specification for Volume resources.",
                                        "properties": {
                                          "shouldTag": {
                                            "type": "boolean",
                                            "description": "Optional field. Volume resources will be tagged with group tags.",
                                            "default": false,
                                            "example": false
                                          }
                                        }
                                      },
                                      "snapshots": {
                                        "type": "object",
                                        "description": "Optional field. Tag specification for Snapshot resources.",
                                        "properties": {
                                          "shouldTag": {
                                            "type": "boolean",
                                            "description": "Optional field. Snapshot resources will be tagged with group tags.",
                                            "default": true,
                                            "example": true
                                          }
                                        }
                                      },
                                      "enis": {
                                        "type": "object",
                                        "description": "Optional field. Tag specification for ENI resources.",
                                        "properties": {
                                          "shouldTag": {
                                            "type": "boolean",
                                            "description": "Optional field. ENI resources will be tagged with group tags.",
                                            "default": false,
                                            "example": false
                                          }
                                        }
                                      },
                                      "amis": {
                                        "type": "object",
                                        "description": "Optional field. Tag specification for AMI resources.",
                                        "properties": {
                                          "shouldTag": {
                                            "type": "boolean",
                                            "description": "Optional field. AMI resources will be tagged with group tags.",
                                            "default": true,
                                            "example": true
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "metadataOptions": {
                                    "title": "Metadata Options",
                                    "type": "object",
                                    "description": "Optional field. Used for IMDSv2. In Create route can't be null. In Update route can be null.",
                                    "required": [
                                      "httpTokens"
                                    ],
                                    "properties": {
                                      "httpTokens": {
                                        "title": "HTTP Tokens",
                                        "type": "string",
                                        "description": "Required for IMDSv2. Can’t be null in Create or Update. Values can be \"optional\" or \"required\".",
                                        "example": "optional"
                                      },
                                      "httpPutResponseHopLimit": {
                                        "type": "integer",
                                        "example": "33",
                                        "description": "An integer within 1,64 range (including).\nThe desired HTTP PUT response hop limit for instance metadata requests.\nThe larger the number, the further instance metadata requests can travel.\n"
                                      },
                                      "instanceMetadataTags": {
                                        "title": "Instance Metadata Tags",
                                        "type": "string",
                                        "enum": [
                                          "Enabled",
                                          "Disabled"
                                        ],
                                        "description": "Indicates whether access to instance tags from the instance metadata is enabled or disabled.\nCan’t be null.\n",
                                        "example": "Enabled"
                                      }
                                    }
                                  },
                                  "cpuOptions": {
                                    "title": "CPU options",
                                    "type": "object",
                                    "description": "Optional field. The CPU options for the instances that are launched within the group.",
                                    "required": [
                                      "threadsPerCore"
                                    ],
                                    "properties": {
                                      "threadsPerCore": {
                                        "title": "thread per core",
                                        "type": "integer",
                                        "example": "1",
                                        "description": "The number of threads per CPU core.\nTo disable multithreading for the instances, specify a value of 1 .\nOtherwise, specify the default value of 2 .\n"
                                      }
                                    }
                                  },
                                  "autoHealing": {
                                    "type": "boolean",
                                    "description": "Optional field. Auto-healing replacement won't be triggered if this parameter value is \"false\".\nIn a case of a stateful group - no recycling will start if this parameter value is \"false\".\n",
                                    "default": true,
                                    "example": true
                                  }
                                }
                              },
                              "volumeAttachments": {
                                "type": "object",
                                "title": "AWS Volume Attachments",
                                "description": "Any volumes specified in this field will be automatically attached to every instance launched in the group.\nAll volumes must be located within the availability zone of the group. \nAdditionally, the group must have at least one persistence configuration.\nIf your group has more than one instance or you want to share the same volume between several instances,\nit's important to use [Amazon EBS Multi-Attach supported volumes](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html)\nto enable concurrent attachment of the volumes to multiple instances. This ensures that your volumes can be effectively\nshared among instances in your group.\n",
                                "required": [
                                  "volumes"
                                ],
                                "properties": {
                                  "volumes": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "volumeId",
                                        "deviceName"
                                      ],
                                      "properties": {
                                        "volumeId": {
                                          "type": "string",
                                          "description": "The volume id to attach\n",
                                          "example": "vol-1234567"
                                        },
                                        "deviceName": {
                                          "type": "string",
                                          "description": "The device name to attach. When you attach a volume to your instance, you include a device name for the volume.\nDo not use a device name that is reserved for the root volume (for example - `/dev/sda1` or `/dev/xvda`).\n",
                                          "example": "/dev/sdb"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "scaling": {
                            "type": "object",
                            "title": "Elastigroup Scaling",
                            "properties": {
                              "up": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "title": "scale up config",
                                  "required": [
                                    "metricName",
                                    "namespace"
                                  ],
                                  "properties": {
                                    "policyName": {
                                      "type": "string",
                                      "description": "The policy name.\n",
                                      "example": "my-up-policy"
                                    },
                                    "namespace": {
                                      "type": "string",
                                      "description": "The namespace for the alarm's associated metric.\n",
                                      "default": "AWS/EC2"
                                    },
                                    "source": {
                                      "type": "string",
                                      "description": "The metric source.\n",
                                      "enum": [
                                        "cloudWatch"
                                      ],
                                      "example": "cloudWatch"
                                    },
                                    "metricName": {
                                      "type": "string",
                                      "description": "The name of the metric.\n",
                                      "default": "CPUUtilization",
                                      "example": "CPUUtilization"
                                    },
                                    "statistic": {
                                      "type": "string",
                                      "description": "The metric statistics to return.\n",
                                      "enum": [
                                        "average",
                                        "sum",
                                        "sampleCount",
                                        "maximum",
                                        "minimum",
                                        "percentile"
                                      ],
                                      "example": "average"
                                    },
                                    "extendedStatistic": {
                                      "type": "string",
                                      "description": "Percentile statistic. Valid values: p0.1 - p100.\n",
                                      "example": "p1.5"
                                    },
                                    "unit": {
                                      "type": "string",
                                      "description": "The unit for the alarm's associated metric.\n",
                                      "enum": [
                                        "seconds",
                                        "microseconds",
                                        "milliseconds",
                                        "bytes",
                                        "kilobytes",
                                        "megabytes",
                                        "gigabytes",
                                        "terabytes",
                                        "bits",
                                        "kilobits",
                                        "megabits",
                                        "gigabits",
                                        "terabits",
                                        "percent",
                                        "count",
                                        "bytes/second",
                                        "kilobytes/second",
                                        "megabytes/second",
                                        "gigabytes/second",
                                        "terabytes/second",
                                        "bits/second",
                                        "kilobits/second",
                                        "megabits/second",
                                        "gigabits/second",
                                        "terabits/second",
                                        "count/second",
                                        "none"
                                      ],
                                      "example": "percent"
                                    },
                                    "threshold": {
                                      "type": "integer",
                                      "description": "The value against which the specified statistic is compared.\n",
                                      "example": 90
                                    },
                                    "adjustment": {
                                      "type": "integer",
                                      "description": "The number associated with the specified adjustment type.\n"
                                    },
                                    "stepAdjustments": {
                                      "type": "array",
                                      "description": "The list of steps to define actions to take based on different thresholds.\nWhen set, policy-level threshold and action cannot be specified.\nIf specified, at least one step should be defined.\n",
                                      "items": {
                                        "type": "object",
                                        "required": [
                                          "threshold"
                                        ],
                                        "properties": {
                                          "action": {
                                            "type": "object",
                                            "required": [
                                              "type"
                                            ],
                                            "description": "The action to take when scale up according to step's threshold is needed.\nA mandatory field, that should be filled with one of the following:\n\"adjustment\", \"percentageAdjustment\", \"setMinTarget\", \"updateCapacity\".\n",
                                            "properties": {
                                              "type": {
                                                "type": "string",
                                                "description": "The type of the action to take when scale up is needed.\n",
                                                "enum": [
                                                  "adjustment",
                                                  "updateCapacity",
                                                  "setMinTarget",
                                                  "percentageAdjustment"
                                                ],
                                                "example": "setMinTarget"
                                              },
                                              "adjustment": {
                                                "type": "integer",
                                                "description": "The number / percentage associated with the specified adjustment type.\nRequired if using `adjustment` or `percentageAdjustment` as action type\n",
                                                "example": 2
                                              },
                                              "minTargetCapacity": {
                                                "type": "integer",
                                                "description": "The desired target capacity of a group.\nRequired if using `setMinTarget` as action type\n",
                                                "example": 3
                                              },
                                              "target": {
                                                "type": "integer",
                                                "description": "The desired number of instances. Required if using `updateCapacity` as action type and neither `minimum` nor `maximum` are not defined.\n",
                                                "example": 3
                                              },
                                              "minimum": {
                                                "type": "integer",
                                                "description": "The lower limit number of instances that you can scale down to. Optional, required if using `updateCapacity` as action type and neither `target` nor `maximum` are not defined\n",
                                                "example": 4
                                              },
                                              "maximum": {
                                                "type": "integer",
                                                "description": "The upper limit number of instances that you can scale up to. Optional, required if using `updateCapacity` as action type and neither `target` nor `minimum` are not defined\n",
                                                "example": 10
                                              }
                                            }
                                          },
                                          "threshold": {
                                            "type": "integer",
                                            "description": "The value against which the specified statistic is compared in order\nto determine if a step should be applied.\n",
                                            "example": 50
                                          }
                                        }
                                      }
                                    },
                                    "action": {
                                      "type": "object",
                                      "required": [
                                        "type"
                                      ],
                                      "description": "The action to take when scale up is needed.\nA mandatory field, that should be filled with one of the following:\n\"adjustment\", \"percentageAdjustment\", \"setMaxTarget\", \"setMinTarget\", \"updateCapacity\".\n",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "description": "The type of the action to take when scale up is needed.\n",
                                          "enum": [
                                            "adjustment",
                                            "updateCapacity",
                                            "setMinTarget",
                                            "percentageAdjustment"
                                          ],
                                          "example": "updateCapacity"
                                        },
                                        "adjustment": {
                                          "type": "integer",
                                          "description": "The number / percentage associated with the specified adjustment type.\nRequired if using `adjustment` or `percentageAdjustment` as action type\n",
                                          "example": 1
                                        },
                                        "minTargetCapacity": {
                                          "type": "integer",
                                          "description": "The minimum target capacity.\nRequired if using `setMinTarget` as action type.\n",
                                          "example": 1
                                        },
                                        "target": {
                                          "type": "integer",
                                          "description": "The desired number of instances. Required if using `updateCapacity` as action type and neither `minimum` nor `maximum` are defined.\n",
                                          "example": 1
                                        },
                                        "minimum": {
                                          "type": "integer",
                                          "description": "The lower limit number of instances that you can scale down to. Optional, required if using `updateCapacity` as action type and neither `target` nor `maximum` are defined\n",
                                          "example": 0
                                        },
                                        "maximum": {
                                          "type": "integer",
                                          "description": "The upper limit number of instances that you can scale up to. Optional, required if using `updateCapacity` as action type and neither `target` nor `minimum` are defined\n",
                                          "example": 5
                                        }
                                      }
                                    },
                                    "minTargetCapacity": {
                                      "type": "integer",
                                      "description": "The minimum target capacity.\n"
                                    },
                                    "dimensions": {
                                      "type": "array",
                                      "description": "The dimensions for the alarm's associated metric.\nWhen name is \"instanceId\", no value is needed.\n",
                                      "items": {
                                        "type": "object",
                                        "required": [
                                          "name"
                                        ],
                                        "properties": {
                                          "name": {
                                            "type": "string",
                                            "example": "InstanceId"
                                          },
                                          "value": {
                                            "type": "string"
                                          }
                                        }
                                      }
                                    },
                                    "period": {
                                      "type": "integer",
                                      "description": "The period in seconds over which the statistic is applied.\n",
                                      "example": 300
                                    },
                                    "evaluationPeriods": {
                                      "type": "integer",
                                      "description": "The number of periods over which data is compared to the specified threshold.\n",
                                      "example": 1
                                    },
                                    "cooldown": {
                                      "type": "integer",
                                      "description": "The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start.\n",
                                      "example": 300
                                    },
                                    "operator": {
                                      "type": "string",
                                      "description": "The operator to use in order to determine if the scaling policy is applicable.\n",
                                      "enum": [
                                        "gt",
                                        "gte",
                                        "lt",
                                        "lte"
                                      ],
                                      "example": "gte"
                                    },
                                    "isEnabled": {
                                      "type": "boolean",
                                      "description": "Specifies whether the scaling policy described in this block is enabled.\n",
                                      "default": true,
                                      "example": true
                                    }
                                  }
                                }
                              },
                              "down": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "title": "scale down config",
                                  "properties": {
                                    "policyName": {
                                      "type": "string",
                                      "description": "The policy name.\n",
                                      "example": "my-down-policy"
                                    },
                                    "namespace": {
                                      "type": "string",
                                      "description": "The namespace for the alarm's associated metric.\n",
                                      "default": "AWS/EC2"
                                    },
                                    "source": {
                                      "type": "string",
                                      "description": "The metric source.\n",
                                      "enum": [
                                        "cloudWatch"
                                      ],
                                      "example": "cloudWatch"
                                    },
                                    "metricName": {
                                      "type": "string",
                                      "description": "The name of the metric.\n",
                                      "default": "CPUUtilization",
                                      "example": "CPUUtilization"
                                    },
                                    "statistic": {
                                      "type": "string",
                                      "description": "The metric statistics to return.\n",
                                      "enum": [
                                        "average",
                                        "sum",
                                        "sampleCount",
                                        "maximum",
                                        "minimum",
                                        "percentile"
                                      ],
                                      "example": "average"
                                    },
                                    "extendedStatistic": {
                                      "type": "string",
                                      "description": "Percentile statistic. Valid values: p0.1 - p100.\n",
                                      "example": "p1.5"
                                    },
                                    "unit": {
                                      "type": "string",
                                      "description": "The unit for the alarm's associated metric.\n",
                                      "enum": [
                                        "seconds",
                                        "microseconds",
                                        "milliseconds",
                                        "bytes",
                                        "kilobytes",
                                        "megabytes",
                                        "gigabytes",
                                        "terabytes",
                                        "bits",
                                        "kilobits",
                                        "megabits",
                                        "gigabits",
                                        "terabits",
                                        "percent",
                                        "count",
                                        "bytes/second",
                                        "kilobytes/second",
                                        "megabytes/second",
                                        "gigabytes/second",
                                        "terabytes/second",
                                        "bits/second",
                                        "kilobits/second",
                                        "megabits/second",
                                        "gigabits/second",
                                        "terabits/second",
                                        "count/second",
                                        "none"
                                      ],
                                      "example": "percent"
                                    },
                                    "threshold": {
                                      "type": "integer",
                                      "description": "The value against which the specified statistic is compared.\n",
                                      "example": 90
                                    },
                                    "adjustment": {
                                      "type": "integer",
                                      "description": "The number associated with the specified adjustment type.\n"
                                    },
                                    "stepAdjustments": {
                                      "type": "array",
                                      "description": "The list of steps to define actions to take based on different thresholds.\nWhen set, policy-level threshold and action cannot be specified.\nIf specified, at least one step should be defined.\n",
                                      "items": {
                                        "type": "object",
                                        "required": [
                                          "threshold"
                                        ],
                                        "properties": {
                                          "action": {
                                            "type": "object",
                                            "required": [
                                              "type"
                                            ],
                                            "description": "The action to take when scale down according to step's threshold is needed.\nA mandatory field, that should be filled with one of the following:\n\"adjustment\", \"percentageAdjustment\", \"setMaxTarget\", \"updateCapacity\".\n",
                                            "properties": {
                                              "type": {
                                                "type": "string",
                                                "description": "The type of the action to take when scale down is needed.\n",
                                                "enum": [
                                                  "adjustment",
                                                  "updateCapacity",
                                                  "setMaxTarget",
                                                  "percentageAdjustment"
                                                ],
                                                "example": "percentageAdjustment"
                                              },
                                              "adjustment": {
                                                "type": "integer",
                                                "description": "The number / percentage associated with the specified adjustment type.\nRequired if using `adjustment` or `percentageAdjustment` as action type\n",
                                                "example": 40
                                              },
                                              "maxTargetCapacity": {
                                                "type": "integer",
                                                "description": "The desired target capacity of.\nRequired if using `setMaxTarget` as action type\n",
                                                "example": 1
                                              },
                                              "target": {
                                                "type": "integer",
                                                "description": "The desired number of instances. Required if using `updateCapacity` as action type and neither `minimum` nor `maximum` are defined.\n",
                                                "example": 2
                                              },
                                              "minimum": {
                                                "type": "integer",
                                                "description": "The lower limit number of instances that you can scale down to. Optional, required if using `updateCapacity` as action type and neither `target` nor `maximum` are defined\n",
                                                "example": 1
                                              },
                                              "maximum": {
                                                "type": "integer",
                                                "description": "The upper limit number of instances that you can scale up to. Optional, required if using `updateCapacity` as action type and neither `target` nor `minimum` are defined\n",
                                                "example": 5
                                              }
                                            }
                                          },
                                          "threshold": {
                                            "type": "integer",
                                            "description": "The value against which the specified statistic is compared in order\nto determine if a step should be applied.\n",
                                            "example": 10
                                          }
                                        }
                                      }
                                    },
                                    "action": {
                                      "type": "object",
                                      "required": [
                                        "type"
                                      ],
                                      "description": "The action to take when scale up is needed.\nA mandatory field, that should be filled with one of the following:\n\"adjustment\", \"percentageAdjustment\", \"setMaxTarget\", \"setMinTarget\", \"updateCapacity\".\n",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "description": "The type of the action to take when scale up is needed.\n",
                                          "enum": [
                                            "adjustment",
                                            "updateCapacity",
                                            "setMinTarget",
                                            "percentageAdjustment"
                                          ],
                                          "example": "updateCapacity"
                                        },
                                        "adjustment": {
                                          "type": "integer",
                                          "description": "The number / percentage associated with the specified adjustment type.\nRequired if using `adjustment` or `percentageAdjustment` as action type.\n",
                                          "example": 1
                                        },
                                        "maxTargetCapacity": {
                                          "type": "integer",
                                          "description": "The maximum target capacity.\nRequired if using `setMaxTarget` as action type.\n",
                                          "example": 1
                                        },
                                        "target": {
                                          "type": "integer",
                                          "description": "The desired number of instances. Required if using `updateCapacity` as action type and neither `minimum` nor `maximum` are defined.\n",
                                          "example": 1
                                        },
                                        "minimum": {
                                          "type": "integer",
                                          "description": "The lower limit number of instances that you can scale down to. Optional, required if using `updateCapacity` as action type and neither minimum nor maximum are defined.\n",
                                          "example": 0
                                        },
                                        "maximum": {
                                          "type": "integer",
                                          "description": "The upper limit number of instances that you can scale up to. Optional, required if using `updateCapacity` as action type and neither minimum nor maximum are defined.\n",
                                          "example": 5
                                        }
                                      }
                                    },
                                    "maxTargetCapacity": {
                                      "type": "integer",
                                      "description": "The maximum target capacity.\n"
                                    },
                                    "dimensions": {
                                      "type": "array",
                                      "description": "The dimensions for the alarm's associated metric.\nWhen name is \"instanceId\", no value is needed.\n",
                                      "items": {
                                        "type": "object",
                                        "required": [
                                          "name"
                                        ],
                                        "properties": {
                                          "name": {
                                            "type": "string",
                                            "example": "InstanceId"
                                          },
                                          "value": {
                                            "type": "string"
                                          }
                                        }
                                      }
                                    },
                                    "period": {
                                      "type": "integer",
                                      "description": "The period in seconds over which the statistic is applied.\n",
                                      "example": 300
                                    },
                                    "evaluationPeriods": {
                                      "type": "integer",
                                      "description": "The number of periods over which data is compared to the specified threshold.\n",
                                      "example": 1
                                    },
                                    "cooldown": {
                                      "type": "integer",
                                      "description": "The amount of time, in seconds, after a scaling activity completes and before any further trigger-related scaling activities can start.\n",
                                      "example": 300
                                    },
                                    "operator": {
                                      "type": "string",
                                      "description": "The operator to use in order to determine if the scaling policy is applicable.\n",
                                      "enum": [
                                        "gt",
                                        "gte",
                                        "lt",
                                        "lte"
                                      ],
                                      "example": "gte"
                                    },
                                    "isEnabled": {
                                      "type": "boolean",
                                      "description": "Specifies whether the scaling policy described in this block is enabled.\n",
                                      "default": true,
                                      "example": true
                                    }
                                  }
                                }
                              },
                              "multipleMetrics": {
                                "type": "object",
                                "properties": {
                                  "metrics": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "title": "Metric config",
                                      "required": [
                                        "name",
                                        "metricName",
                                        "namespace"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "The metric name.\n",
                                          "example": "metric1"
                                        },
                                        "metricName": {
                                          "type": "string",
                                          "description": "The name of the source metric.\n",
                                          "example": "CPUUtilization"
                                        },
                                        "namespace": {
                                          "type": "string",
                                          "description": "The namespace for the alarm's associated metric.\n",
                                          "default": "AWS/EC2"
                                        },
                                        "statistic": {
                                          "type": "string",
                                          "description": "The metric statistics to return.\n",
                                          "enum": [
                                            "average",
                                            "sum",
                                            "sampleCount",
                                            "maximum",
                                            "minimum",
                                            "percentile"
                                          ],
                                          "example": "average"
                                        },
                                        "extendedStatistic": {
                                          "type": "string",
                                          "description": "Percentile statistic. Valid values: p0.1 - p100.\n",
                                          "example": "p1.5"
                                        },
                                        "unit": {
                                          "type": "string",
                                          "description": "The unit for the alarm's associated metric.\n",
                                          "enum": [
                                            "seconds",
                                            "microseconds",
                                            "milliseconds",
                                            "bytes",
                                            "kilobytes",
                                            "megabytes",
                                            "gigabytes",
                                            "terabytes",
                                            "bits",
                                            "kilobits",
                                            "megabits",
                                            "gigabits",
                                            "terabits",
                                            "percent",
                                            "count",
                                            "bytes/second",
                                            "kilobytes/second",
                                            "megabytes/second",
                                            "gigabytes/second",
                                            "terabytes/second",
                                            "bits/second",
                                            "kilobits/second",
                                            "megabits/second",
                                            "gigabits/second",
                                            "terabits/second",
                                            "count/second",
                                            "none"
                                          ],
                                          "example": "percent"
                                        },
                                        "dimensions": {
                                          "type": "array",
                                          "description": "The dimensions for the alarm's associated metric.\nWhen name is \"instanceId\", no value is needed.\n",
                                          "items": {
                                            "type": "object",
                                            "required": [
                                              "name"
                                            ],
                                            "properties": {
                                              "name": {
                                                "type": "string",
                                                "example": "InstanceId"
                                              },
                                              "value": {
                                                "type": "string"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "expressions": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "title": "Expression config",
                                      "required": [
                                        "name",
                                        "expression"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "The expression name.\n",
                                          "example": "e1"
                                        },
                                        "expression": {
                                          "type": "string",
                                          "description": "An expression consisting of the metric names listed in the 'metrics' array.\n",
                                          "example": "metric1+10"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "target": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "title": "target scaling config",
                                  "required": [
                                    "policyName",
                                    "namespace",
                                    "metricName",
                                    "target"
                                  ],
                                  "properties": {
                                    "source": {
                                      "title": "Source",
                                      "description": "The source of the metric.\n",
                                      "enum": [
                                        "cloudWatch"
                                      ],
                                      "type": "string",
                                      "example": "cloudWatch"
                                    },
                                    "policyName": {
                                      "type": "string",
                                      "description": "The policy name\n",
                                      "example": "my-target-scaling-policy"
                                    },
                                    "metricName": {
                                      "type": "string",
                                      "description": "The name of the metric.\n",
                                      "default": "CPUUtilization",
                                      "example": "CPUUtilization"
                                    },
                                    "statistic": {
                                      "type": "string",
                                      "description": "The metric statistics to return.\n",
                                      "enum": [
                                        "average",
                                        "sum",
                                        "sampleCount",
                                        "maximum",
                                        "minimum",
                                        "percentile"
                                      ],
                                      "example": "average"
                                    },
                                    "unit": {
                                      "type": "string",
                                      "description": "The unit for the alarm's associated metric.\n",
                                      "enum": [
                                        "seconds",
                                        "microseconds",
                                        "milliseconds",
                                        "bytes",
                                        "kilobytes",
                                        "megabytes",
                                        "gigabytes",
                                        "terabytes",
                                        "bits",
                                        "kilobits",
                                        "megabits",
                                        "gigabits",
                                        "terabits",
                                        "percent",
                                        "count",
                                        "bytes/second",
                                        "kilobytes/second",
                                        "megabytes/second",
                                        "gigabytes/second",
                                        "terabytes/second",
                                        "bits/second",
                                        "kilobits/second",
                                        "megabits/second",
                                        "gigabits/second",
                                        "terabits/second",
                                        "count/second",
                                        "none"
                                      ],
                                      "example": "percent"
                                    },
                                    "namespace": {
                                      "type": "string",
                                      "description": "The namespace for the alarm's associated metric.\n",
                                      "default": "AWS/EC2"
                                    },
                                    "dimensions": {
                                      "type": "array",
                                      "description": "The dimensions for the alarm's associated metric.\nWhen name is \"instanceId\", no value is needed.\n",
                                      "items": {
                                        "type": "object",
                                        "required": [
                                          "name"
                                        ],
                                        "properties": {
                                          "name": {
                                            "type": "string",
                                            "example": "InstanceId"
                                          },
                                          "value": {
                                            "type": "string"
                                          }
                                        }
                                      }
                                    },
                                    "period": {
                                      "type": "integer",
                                      "description": "The period in seconds over which the statistic is applied.\n",
                                      "example": 300
                                    },
                                    "evaluationPeriods": {
                                      "type": "integer",
                                      "description": "The number of periods over which data is compared to the specified threshold.\n",
                                      "example": 1
                                    },
                                    "cooldown": {
                                      "type": "integer",
                                      "description": "The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start.\n",
                                      "example": 300
                                    },
                                    "target": {
                                      "type": "integer",
                                      "description": "The target value for the group.\n",
                                      "example": 1
                                    },
                                    "predictive": {
                                      "type": "object",
                                      "description": "Enable predictive autoscaling.\n",
                                      "required": [
                                        "mode"
                                      ],
                                      "properties": {
                                        "mode": {
                                          "description": "Predictive autoscaling mode.\n",
                                          "enum": [
                                            "FORECAST_AND_SCALE",
                                            "FORECAST_ONLY"
                                          ],
                                          "type": "string",
                                          "example": "FORECAST_AND_SCALE"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "scheduling": {
                            "type": "object",
                            "title": "Elastigroup Scheduling",
                            "description": "Schedule tasks to execute, using CRON expressions.\n",
                            "properties": {
                              "tasks": {
                                "type": "array",
                                "description": "The scheduling tasks for the group.\n",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "isEnabled": {
                                      "type": "boolean",
                                      "description": "Describes whether the task is enabled. When true the task should run when false it should not run.\n",
                                      "example": true
                                    },
                                    "startTime": {
                                      "type": "string",
                                      "description": "DATETIME in ISO-8601 format and is in UTC time. Sets a start time for scheduled actions.\nIf \"frequency\" or \"cronExpression\" are not used - the task will run only once at the start time and will then be deleted from the group configuration.\n",
                                      "example": "2018-05-23T10:55:09Z"
                                    },
                                    "frequency": {
                                      "type": "string",
                                      "description": "The recurrence frequency to run this task.\nOnly one of ‘frequency' or ‘cronExpression' should be used at a time\n",
                                      "enum": [
                                        "hourly",
                                        "daily",
                                        "weekly"
                                      ],
                                      "example": "hourly"
                                    },
                                    "cronExpression": {
                                      "type": "string",
                                      "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script.\nOnly one of ‘frequency' or ‘cronExpression' should be used at a time.\n",
                                      "example": "0 1 * * *"
                                    },
                                    "taskType": {
                                      "type": "string",
                                      "description": "The task type to run. For stateful groups, use only those who has a `stateful` prefix, or `backup_ami`. For non-stateful group, use the rest.\n",
                                      "enum": [
                                        "backup_ami",
                                        "scale",
                                        "scaleUp",
                                        "percentageScaleUp",
                                        "scaleDown",
                                        "percentageScaleDown",
                                        "roll",
                                        "clusterRoll (For ECS Integration)",
                                        "statefulUpdateCapacity",
                                        "statefulRecycle"
                                      ],
                                      "example": "scale"
                                    },
                                    "scaleTargetCapacity": {
                                      "type": "integer",
                                      "description": "The target capacity of the group.\nShould be used when choosing ‘taskType' of ‘scale'.\n"
                                    },
                                    "scaleMinCapacity": {
                                      "type": "integer",
                                      "description": "The min capacity of the group.\nShould be used when choosing ‘taskType' of ‘scale'.\n"
                                    },
                                    "scaleMaxCapacity": {
                                      "type": "integer",
                                      "description": "The max capacity of the group.\nRequired when ‘taskType' is ‘scale'.\n"
                                    },
                                    "targetCapacity": {
                                      "type": "integer",
                                      "description": "Set a new target capacity for the Elastigroup.\nRequired when ‘taskType' is ‘statefulUpdateCapacity'.\n"
                                    },
                                    "MinCapacity": {
                                      "type": "integer",
                                      "description": "Set a new minimum capacity for the Elastigroup.\nRequired when ‘taskType' is ‘statefulUpdateCapacity'.\n"
                                    },
                                    "MaxCapacity": {
                                      "type": "integer",
                                      "description": "Set a new maximum capacity for the Elastigroup.\nRequired when ‘taskType' is ‘statefulUpdateCapacity'.\n"
                                    },
                                    "batchSizePercentage": {
                                      "type": "integer",
                                      "description": "The percentage size of each batch in the scheduled deployment roll.\nRequired when the taskType is roll.\n"
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "thirdPartiesIntegration": {
                            "type": "object",
                            "title": "Elastigroup Third Party Integrations",
                            "description": "All definitions for using third-party Integrations\n",
                            "properties": {
                              "rancher": {
                                "type": "object",
                                "description": "Rancher integration object.\n",
                                "properties": {
                                  "masterHost": {
                                    "type": "string",
                                    "description": "Rancher master url\n",
                                    "example": "http://myRancher.com:8080/v1"
                                  },
                                  "accessKey": {
                                    "type": "string",
                                    "description": "Rancher version\n",
                                    "example": "1",
                                    "default": "1"
                                  },
                                  "secretKey": {
                                    "type": "string",
                                    "example": "SECRET"
                                  },
                                  "version": {
                                    "type": "string",
                                    "example": 1
                                  }
                                }
                              },
                              "kubernetes": {
                                "type": "object",
                                "properties": {
                                  "integrationMode": {
                                    "type": "string",
                                    "example": "pod"
                                  },
                                  "clusterIdentifier": {
                                    "type": "string",
                                    "example": "test-k8s"
                                  },
                                  "autoScale": {
                                    "type": "object",
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "example": true,
                                        "default": true
                                      },
                                      "cooldown": {
                                        "type": "integer",
                                        "example": 300
                                      },
                                      "down": {
                                        "type": "object",
                                        "description": "Auto Scaling scale down operations.\n",
                                        "properties": {
                                          "evaluationPeriods": {
                                            "type": "integer",
                                            "example": 5
                                          },
                                          "maxScaleDownPercentage": {
                                            "type": "integer",
                                            "description": "The maximum % of nodes that will be scaled down at once out of the total amount of potential nodes to scale down.\nexample: if 10 nodes can be scaled down, only 5 will be given 50% in this parameter.\nthe other 50% will be scaled down in the next autoscaling iteration.\n",
                                            "example": 70
                                          },
                                          "headroom": {
                                            "type": "object",
                                            "description": "Spare resource capacity management enabling fast assignment of Pods without waiting for new resources to launch.\n",
                                            "properties": {
                                              "cpuPerUnit": {
                                                "type": "integer",
                                                "description": "Optionally configure the number of CPUs to allocate per headroom unit. CPUs are denoted in CPU units, where 1024 units = 1 vCPU.\n",
                                                "example": 2048
                                              },
                                              "memoryPerUnit": {
                                                "type": "integer",
                                                "description": "Optionally configure the amount of memory (MiB) to allocate per headroom unit.\n",
                                                "example": 3
                                              },
                                              "numOfUnits": {
                                                "type": "integer",
                                                "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                                "example": 2
                                              },
                                              "gpuPerUnit": {
                                                "type": "integer",
                                                "example": 2
                                              }
                                            }
                                          }
                                        }
                                      },
                                      "labels": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "key": {
                                              "type": "string",
                                              "example": "group, kops.k8s.io/instancegroup"
                                            },
                                            "value": {
                                              "type": "string",
                                              "example": "microservices"
                                            }
                                          }
                                        }
                                      },
                                      "isAutoConfig": {
                                        "type": "boolean",
                                        "example": false,
                                        "default": false
                                      }
                                    }
                                  }
                                }
                              },
                              "nomad": {
                                "type": "object",
                                "properties": {
                                  "masterHost": {
                                    "type": "string",
                                    "example": "https://master.host.com"
                                  },
                                  "masterPort": {
                                    "type": "integer",
                                    "example": 443
                                  },
                                  "autoScale": {
                                    "type": "object",
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "description": "Enable the Autoscaler.\n",
                                        "example": true
                                      },
                                      "cooldown": {
                                        "type": "integer",
                                        "description": "Cooldown period between scaling actions. Value should be cooldown period in seconds, greater than 180\n",
                                        "example": 180
                                      },
                                      "down": {
                                        "type": "object",
                                        "description": "Auto Scaling scale down operations.\n",
                                        "properties": {
                                          "evaluationPeriods": {
                                            "type": "integer",
                                            "example": 3
                                          }
                                        }
                                      },
                                      "headroom": {
                                        "type": "object",
                                        "description": "Spare resource capacity management enabling fast assignment of Pods without waiting for new resources to launch.\n",
                                        "properties": {
                                          "cpuPerUnit": {
                                            "type": "integer",
                                            "description": "Optionally configure the number of CPUs to allocate per headroom unit. CPUs are denoted in CPU units, where 1024 units = 1 vCPU.\n",
                                            "example": 2048
                                          },
                                          "memoryPerUnit": {
                                            "type": "integer",
                                            "description": "Optionally configure the amount of memory (MiB) to allocate per headroom unit.\n",
                                            "example": 3
                                          },
                                          "numOfUnits": {
                                            "type": "integer",
                                            "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                            "example": 2
                                          }
                                        }
                                      },
                                      "constraints": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "key": {
                                              "type": "string",
                                              "example": "${node.class}"
                                            },
                                            "value": {
                                              "type": "string",
                                              "example": "value"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "aclToken": {
                                    "type": "string",
                                    "example": 123
                                  },
                                  "tlsConfig": {
                                    "type": "object",
                                    "description": "Configuration object for TLS integration. (optional)\n",
                                    "properties": {
                                      "tlsEnabled": {
                                        "type": "boolean",
                                        "example": true,
                                        "description": "When true, all communication to the master is with TLS. (required)\n"
                                      },
                                      "privateKey": {
                                        "type": "string",
                                        "example": "PRIVATE KEY CERTIFICATE STR",
                                        "description": "A generated client private key. (required)\n"
                                      },
                                      "certificate": {
                                        "type": "string",
                                        "example": "PUBLIC KEY CERTIFICATE STR",
                                        "description": "The certificates chain, first the client certificate then the ca certificate. (required)\n"
                                      }
                                    }
                                  }
                                }
                              },
                              "opsWorks": {
                                "type": "object",
                                "properties": {
                                  "layerId": {
                                    "type": "string",
                                    "example": "00d9m815-8aac-62b7-cc01-123456, xxxxxx-xxxxxxxx, xxxxxxx-xxxxxxxxxx"
                                  },
                                  "stackType": {
                                    "type": "string",
                                    "example": "CLASSIC"
                                  }
                                }
                              },
                              "codeDeploy": {
                                "type": "object",
                                "properties": {
                                  "cleanUpOnFailure": {
                                    "type": "boolean",
                                    "example": false
                                  },
                                  "terminateInstanceOnFailure": {
                                    "type": "boolean",
                                    "example": false
                                  },
                                  "deploymentGroups": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "applicationName": {
                                          "type": "string",
                                          "example": "test-app"
                                        },
                                        "deploymentGroupName": {
                                          "type": "string",
                                          "example": "test-grp"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "route53": {
                                "type": "object",
                                "description": "Route53 integration object.\n",
                                "properties": {
                                  "domains": {
                                    "type": "array",
                                    "description": "Route53 domain configurations.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "hostedZoneId": {
                                          "type": "string",
                                          "description": "The Route53 Hosted Zone ID for the registered domain.\n",
                                          "example": "Z3UFMBCGJMYLUT"
                                        },
                                        "spotinstAccountId": {
                                          "type": "string",
                                          "description": "The Spot account ID that is linked to the AWS account that holds the Route53 hosted Zone ID.\nThe default is the user Spot account provided as a URL parameter.\n",
                                          "example": "act-1234abcd"
                                        },
                                        "recordSetType": {
                                          "type": "string",
                                          "description": "Set the type of recordSet to update.\nValid values:\n* \"a\" - means register and de-register of instances done by IP address (IPv4).\nWhen it is \"a\" you should also specify usePublicIp.\n* \"cname\" - register and de-register of instances done by CNAME. When it is \"cname\", you should also specify usePublicDns.\n",
                                          "enum": [
                                            "a",
                                            "cname"
                                          ],
                                          "example": "a",
                                          "default": "a"
                                        },
                                        "recordSets": {
                                          "type": "array",
                                          "description": "List of record sets.\n",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "name": {
                                                "type": "string",
                                                "description": "Name of the recordSet.\n",
                                                "example": "testcname.spot.io."
                                              },
                                              "usePublicIp": {
                                                "type": "boolean",
                                                "description": "Defines whether to use public or private IP. Relevant only when recordSetType=a.\n",
                                                "example": true,
                                                "default": false
                                              },
                                              "usePublicDns": {
                                                "type": "boolean",
                                                "description": "Defines whether to use a public DNS or private DNS in the instance registration process.\nRelevant only when recordSetType=cname.\n* False=Create a new weighted CNAME recordset with same name and the instance Private DNS.\n* True=instances should be registered with public DNS.\n",
                                                "example": true,
                                                "default": false
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "elasticBeanstalk": {
                                "type": "object",
                                "description": "Beanstalk integration object.\n",
                                "properties": {
                                  "environmentId": {
                                    "type": "string",
                                    "example": "e-12345"
                                  },
                                  "deploymentPreferences": {
                                    "type": "object",
                                    "properties": {
                                      "automaticRoll": {
                                        "type": "boolean",
                                        "example": true
                                      },
                                      "batchSizePercentage": {
                                        "type": "integer",
                                        "example": 50
                                      },
                                      "gracePeriod": {
                                        "type": "integer",
                                        "example": 600
                                      },
                                      "strategy": {
                                        "type": "object",
                                        "properties": {
                                          "action": {
                                            "type": "string",
                                            "example": "REPLACE_SERVER"
                                          },
                                          "shouldDrainInstances": {
                                            "type": "boolean",
                                            "example": true
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "managedActions": {
                                    "type": "object",
                                    "properties": {
                                      "platformUpdate": {
                                        "type": "object",
                                        "properties": {
                                          "performAt": {
                                            "type": "string",
                                            "example": "timeWindow"
                                          },
                                          "timeWindow": {
                                            "type": "string",
                                            "example": "Mon:23:50-Tue:00:20"
                                          },
                                          "updateLevel": {
                                            "type": "string",
                                            "example": "patch"
                                          },
                                          "instanceRefreshEnabled": {
                                            "type": "boolean",
                                            "example": true
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "ecs": {
                                "type": "object",
                                "description": "ECS integration object.\n",
                                "properties": {
                                  "clusterName": {
                                    "type": "string",
                                    "example": "test-ecs",
                                    "description": "ECS cluster name\n"
                                  },
                                  "autoScale": {
                                    "type": "object",
                                    "title": "ECS Autoscaler",
                                    "description": "The ECS Autoscaler properties.\n",
                                    "required": [
                                      "isEnabled"
                                    ],
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "description": "Enable the ECS Autoscaler.\n",
                                        "example": true
                                      },
                                      "cooldown": {
                                        "type": "integer",
                                        "description": "Cooldown period between scaling actions. Value should be cooldown period in seconds, greater than 180.\n",
                                        "example": 300
                                      },
                                      "attributes": {
                                        "type": "object",
                                        "properties": {
                                          "key": {
                                            "type": "string",
                                            "example": "the_key"
                                          },
                                          "value": {
                                            "type": "string",
                                            "example": "the_value"
                                          }
                                        }
                                      },
                                      "resourceLimits": {
                                        "type": "object",
                                        "description": "Optionally set upper and lower bounds on the resource usage of the cluster.\n",
                                        "properties": {
                                          "maxMemoryGib": {
                                            "type": "integer",
                                            "description": "The maximum memory in GiB units that can be allocated to the cluster. Minimum value: 1.\n",
                                            "example": 1
                                          },
                                          "maxVcpu": {
                                            "type": "integer",
                                            "description": "The maximum CPU in vCPU units that can be allocated to the cluster. Minimum value: 1.\n",
                                            "example": 1
                                          }
                                        }
                                      },
                                      "down": {
                                        "type": "object",
                                        "description": "Autoscaling scale down operations.\n",
                                        "properties": {
                                          "evaluationPeriods": {
                                            "type": "integer",
                                            "example": 4
                                          },
                                          "maxScaleDownPercentage": {
                                            "type": "integer",
                                            "description": "The maximum portion (as a %) of nodes that will be scaled down at once out of the total number of potential nodes to scale down.\nExample: If there are 10 nodes to scale down and the parameter is 50%, then only 5 nodes will be scaled down at once.\nThe other 5 nodes will be scaled down in the next autoscaling iteration.\n",
                                            "example": 20
                                          }
                                        }
                                      },
                                      "headroom": {
                                        "type": "object",
                                        "description": "Spare resource capacity management enabling fast assignment of pods without waiting for new resources to launch.\n",
                                        "properties": {
                                          "cpuPerUnit": {
                                            "type": "integer",
                                            "description": "Optionally configure the number of CPUs to allocate per headroom unit. CPUs are denoted in CPU units, where 1024 units = 1 vCPU.\n",
                                            "example": 2048
                                          },
                                          "memoryPerUnit": {
                                            "type": "integer",
                                            "description": "Optionally configure the amount of memory (MiB) to allocate per headroom unit.\n",
                                            "example": 3
                                          },
                                          "numOfUnits": {
                                            "type": "integer",
                                            "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                            "example": 2
                                          }
                                        }
                                      },
                                      "isAutoConfig": {
                                        "type": "boolean",
                                        "description": "Use automatic headroom. When set to true, the values under cluster.autoScaler.headroom are not effective, as Ocean configures and optimizes headroom automatically.\n",
                                        "example": false
                                      },
                                      "shouldScaleDownNonServiceTasks": {
                                        "type": "boolean",
                                        "description": "Option to scale down non-service tasks. If not set, Ocean does not scale down standalone tasks.\n",
                                        "default": false,
                                        "example": true
                                      },
                                      "enableAutomaticAndManualHeadroom": {
                                        "type": "boolean",
                                        "description": "When set to true, both automatic and per custom Virtual Node Group manual headroom to be saved concurrently and independently in the cluster. prerequisite: isAutoConfig must be true\n",
                                        "example": false
                                      }
                                    }
                                  },
                                  "batch": {
                                    "type": "object",
                                    "properties": {
                                      "jobQueueNames": {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "example": [
                                            "dumpy-big-processing"
                                          ]
                                        }
                                      }
                                    }
                                  },
                                  "optimizeImages": {
                                    "type": "object",
                                    "properties": {
                                      "shouldOptimizeEcsAmi": {
                                        "type": "boolean",
                                        "example": true
                                      },
                                      "performAt": {
                                        "type": "string",
                                        "description": "Settings for maintenance strategy.\\\nperformAt of type: 'never' OR 'timeWindow' can only be applied to groups with \"availabilityOriented\" OR groups with \"persistence\",\\\nother groups allow either 'always' type or nothing which also means always.\n",
                                        "enum": [
                                          "never",
                                          "always",
                                          "timeWindow"
                                        ],
                                        "example": "timeWindow",
                                        "default": "always"
                                      },
                                      "timeWindows": {
                                        "type": "array",
                                        "description": "When performAt is 'timeWindow':\\\nmust specify a list of 'timeWindows' with at least one time window Each string is in the format of - ddd:hh:mm-ddd:hh:mm\n* ddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat\n* hh = hour 24 = 0 -23\n* mm = minute = 0 - 59\n",
                                        "items": {
                                          "type": "string",
                                          "example": "Mon:03:00-Wed:02:30"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "dockerSwarm": {
                                "title": "DockerSwarm ThirdPartiesIntegration Object",
                                "type": "object",
                                "description": "DockerSwarm integration object.\n",
                                "properties": {
                                  "masterHost": {
                                    "type": "string",
                                    "example": "swarm1.swarm.com",
                                    "description": "Docker swarm master hostname\n"
                                  },
                                  "masterPort": {
                                    "type": "integer",
                                    "example": 1234,
                                    "description": "Docker swarm master port number\n"
                                  },
                                  "autoScale": {
                                    "type": "object",
                                    "description": "autoScale configuration\n",
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "example": "true",
                                        "description": "Specifies whether the scaling policy described in this block is enabled.\n",
                                        "default": true
                                      },
                                      "cooldown": {
                                        "type": "integer",
                                        "example": 300,
                                        "description": "The amount of time, in seconds, after a scaling activity completes before any further trigger-related scaling activities can start.\n"
                                      },
                                      "down": {
                                        "type": "object",
                                        "properties": {
                                          "evaluationPeriods": {
                                            "type": "integer",
                                            "example": 4,
                                            "description": "The number of periods over which data is compared to the specified threshold.\n"
                                          },
                                          "maxScaleDownPercentage": {
                                            "type": "integer",
                                            "example": 20,
                                            "description": "Would represent the maximum % to scale-down.\n",
                                            "minimum": 1,
                                            "maximum": 100
                                          }
                                        }
                                      },
                                      "headroom": {
                                        "type": "object",
                                        "description": "Set custom headroom per Virtual Node Group. provide list of launchSpec.autoScale.headrooms object\n",
                                        "properties": {
                                          "cpuPerUnit": {
                                            "type": "integer",
                                            "description": "configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU\n",
                                            "example": 1000
                                          },
                                          "memoryPerUnit": {
                                            "type": "integer",
                                            "description": "Configure the amount of memory (MiB) to allocate the headroom.\n",
                                            "example": 2048
                                          },
                                          "numOfUnits": {
                                            "type": "integer",
                                            "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                            "example": 3
                                          }
                                        }
                                      },
                                      "tlsConfig": {
                                        "type": "object",
                                        "properties": {
                                          "tlsEnabled": {
                                            "type": "boolean",
                                            "example": true
                                          },
                                          "privateKey": {
                                            "type": "string",
                                            "example": "PRIVATE KEY CERTIFICATE STR"
                                          },
                                          "certificate": {
                                            "type": "string",
                                            "example": "PUBLIC KEY CERTIFICATE STR"
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "jenkins": {
                                "title": "Jenkins ThirdPartiesIntegration Object",
                                "type": "object",
                                "description": "Jenkins integration object.\n",
                                "properties": {
                                  "connectionMethod": {
                                    "type": "object",
                                    "description": "Connection method configuration, define how Jenkins orchestrator and elastigroup with Jenkins integration will connect and communicate\n",
                                    "properties": {
                                      "jnlp": {
                                        "type": "object",
                                        "properties": {
                                          "masterIP": {
                                            "type": "string",
                                            "example": "210.4.5.1",
                                            "description": "Jenkins orchestrator ip adress\n"
                                          },
                                          "masterPort": {
                                            "type": "string",
                                            "example": "8080",
                                            "description": "Jenkins orchestrator listening port (usually 8080)\n"
                                          },
                                          "password": {
                                            "type": "string",
                                            "example": "foo",
                                            "description": "Jenkins orchestrator password, when set, `userName` is required\n"
                                          },
                                          "userName": {
                                            "type": "string",
                                            "example": "foo",
                                            "description": "Jenkins orchestrator userName, when set, `password` is required\n"
                                          },
                                          "token": {
                                            "type": "string",
                                            "example": "1234",
                                            "description": "Jenkins orchestrator authentication token. Set both `token` and `password` is not allowed\n"
                                          }
                                        }
                                      },
                                      "ssh": {
                                        "type": "object",
                                        "properties": {
                                          "sshPublicKey": {
                                            "type": "string",
                                            "example": "ssh-rsa AAAAB3NzaC1y...",
                                            "description": "public key for SSH connection\n"
                                          }
                                        }
                                      },
                                      "manuallyConnection": {
                                        "type": "boolean",
                                        "example": "true",
                                        "description": "When set to `true`, startup-script for elsatigroup with jenkins integration need to be define manually by the user in `compute.launchSpecification.userData`\n"
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "logging": {
                            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/properties/group/properties/logging"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group"
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema"
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List All Elastigroups",
        "description": "List all AWS Elastigroups for a Spot Account\n",
        "operationId": "elastigroupAwsListAll",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "List All Groups Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "67582d0c-108b-4ef7-9fdc-d39678a30844",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-01-07T07:30:58.622Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "description": "ID",
                                        "example": "sig-1234567"
                                      },
                                      "name": {
                                        "type": "string",
                                        "description": "EG Name",
                                        "example": "EG name"
                                      },
                                      "description": {
                                        "type": "string",
                                        "description": "Description",
                                        "example": "validation"
                                      },
                                      "capacity": {
                                        "type": "object",
                                        "description": "Capacity",
                                        "properties": {
                                          "minimum": {
                                            "type": "integer",
                                            "description": "Minimum Value",
                                            "example": 1
                                          },
                                          "maximum": {
                                            "type": "integer",
                                            "description": "Maximum Value",
                                            "example": 1
                                          },
                                          "target": {
                                            "type": "integer",
                                            "description": "Target Value",
                                            "example": 1
                                          },
                                          "unit": {
                                            "type": "string",
                                            "description": "Unit",
                                            "example": "instance"
                                          }
                                        }
                                      },
                                      "strategy": {
                                        "type": "object",
                                        "description": "Strategy",
                                        "properties": {
                                          "risk": {
                                            "type": "integer",
                                            "description": "Risk",
                                            "example": 0
                                          },
                                          "onDemandCount": {
                                            "type": "string",
                                            "description": "On Demand Count",
                                            "example": null
                                          },
                                          "availabilityVsCost": {
                                            "type": "string",
                                            "description": "Availability VS Cost",
                                            "example": "balanced"
                                          }
                                        }
                                      },
                                      "compute": {
                                        "type": "object",
                                        "description": "Compute",
                                        "properties": {
                                          "instanceTypes": {
                                            "type": "object",
                                            "properties": {
                                              "ondemand": {
                                                "type": "string",
                                                "description": "On Demand",
                                                "example": "m3.large"
                                              },
                                              "spot": {
                                                "type": "string",
                                                "description": "Spot",
                                                "example": [
                                                  "c3.large m3.large"
                                                ]
                                              }
                                            }
                                          },
                                          "availabilityZones": {
                                            "type": "object",
                                            "properties": {
                                              "name": {
                                                "type": "string",
                                                "description": "Name",
                                                "example": "us-west-2a"
                                              },
                                              "subnetIds": {
                                                "type": "string",
                                                "description": "Subnet IDs",
                                                "example": [
                                                  "subnet-1234567"
                                                ]
                                              }
                                            }
                                          },
                                          "product": {
                                            "type": "string",
                                            "description": "Operatin System",
                                            "example": "Linux/UNIX"
                                          },
                                          "launchSpecification": {
                                            "type": "object",
                                            "properties": {
                                              "securityGroupIds": {
                                                "type": "string",
                                                "description": "Security Group IDs",
                                                "example": [
                                                  "sg-1234567"
                                                ]
                                              },
                                              "monitoring": {
                                                "type": "boolean",
                                                "description": "Monitoring",
                                                "example": true
                                              },
                                              "imageId": {
                                                "type": "string",
                                                "description": "Image ID",
                                                "example": "ami-987654"
                                              },
                                              "keyPair": {
                                                "type": "string",
                                                "description": "Key Pair",
                                                "example": "keyp"
                                              },
                                              "userData": {
                                                "type": "string",
                                                "description": "User Data",
                                                "example": null
                                              }
                                            }
                                          }
                                        }
                                      },
                                      "scaling": {
                                        "type": "object",
                                        "properties": {
                                          "up": {
                                            "type": "object",
                                            "properties": {
                                              "policyName": {
                                                "type": "string",
                                                "description": "Policy Name",
                                                "example": "up Scaling Policy 1"
                                              },
                                              "metricName": {
                                                "type": "string",
                                                "description": "Metric Name",
                                                "example": "CPUUtilization"
                                              },
                                              "statistic": {
                                                "type": "string",
                                                "description": "Statistics",
                                                "example": "maximum"
                                              },
                                              "unit": {
                                                "type": "string",
                                                "description": "Unit",
                                                "example": "percent"
                                              },
                                              "threshold": {
                                                "type": "integer",
                                                "description": "Threshold",
                                                "example": 90
                                              },
                                              "adjustment": {
                                                "type": "integer",
                                                "description": "Adjustment",
                                                "example": 2
                                              },
                                              "namespace": {
                                                "type": "string",
                                                "description": "Namespace",
                                                "example": "AWS/EC2"
                                              },
                                              "period": {
                                                "type": "integer",
                                                "description": "Period",
                                                "example": 300
                                              },
                                              "evaluationPeriods": {
                                                "type": "integer",
                                                "description": "Evaluation Period",
                                                "example": 3
                                              },
                                              "cooldown": {
                                                "type": "integer",
                                                "description": "Cool Down",
                                                "example": 60
                                              }
                                            }
                                          },
                                          "down": {
                                            "type": "object",
                                            "properties": {
                                              "policyName": {
                                                "type": "string",
                                                "description": "Policy Name",
                                                "example": "down Scaling Policy 1"
                                              },
                                              "metricName": {
                                                "type": "string",
                                                "description": "Metric Name",
                                                "example": "CPUUtilization"
                                              },
                                              "statistic": {
                                                "type": "string",
                                                "description": "Statistics",
                                                "example": "maximum"
                                              },
                                              "unit": {
                                                "type": "string",
                                                "description": "Unit",
                                                "example": "percent"
                                              },
                                              "threshold": {
                                                "type": "integer",
                                                "description": "Threshold",
                                                "example": 50
                                              },
                                              "adjustment": {
                                                "type": "integer",
                                                "description": "Adjustment",
                                                "example": 2
                                              },
                                              "namespace": {
                                                "type": "string",
                                                "description": "Namespace",
                                                "example": "AWS/EC2"
                                              },
                                              "period": {
                                                "type": "integer",
                                                "description": "Period",
                                                "example": 300
                                              },
                                              "evaluationPeriods": {
                                                "type": "integer",
                                                "description": "Evaluation Period",
                                                "example": 3
                                              },
                                              "cooldown": {
                                                "type": "integer",
                                                "description": "Cool Down",
                                                "example": 60
                                              },
                                              "dimensions": {
                                                "type": "array",
                                                "items": {
                                                  "type": "object",
                                                  "properties": {
                                                    "name": {
                                                      "type": "string",
                                                      "description": "Name",
                                                      "example": "InstanceId"
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      },
                                      "scheduling": {
                                        "type": "object",
                                        "properties": {
                                          "tasks": {
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "frequency": {
                                                  "type": "string",
                                                  "description": "Frequency",
                                                  "example": "weekly"
                                                },
                                                "taskType": {
                                                  "type": "string",
                                                  "description": "Task Type",
                                                  "example": "backup_ami"
                                                }
                                              }
                                            }
                                          }
                                        }
                                      },
                                      "thirdPartiesIntegration": {
                                        "type": "object"
                                      },
                                      "createdAt": {
                                        "type": "string",
                                        "description": "Created At",
                                        "example": "2016-02-16T09:03:23.000Z"
                                      },
                                      "updatedAt": {
                                        "type": "string",
                                        "description": "Updated At",
                                        "example": "2018-01-07T00:10:30.000Z"
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "description": "ID",
                                        "example": "sig-897654"
                                      },
                                      "name": {
                                        "type": "string",
                                        "description": "EG Name",
                                        "example": "Test EG"
                                      },
                                      "description": {
                                        "type": "string",
                                        "description": "Description",
                                        "example": "Test"
                                      },
                                      "capacity": {
                                        "type": "object",
                                        "description": "Capacity",
                                        "properties": {
                                          "minimum": {
                                            "type": "integer",
                                            "description": "Minimum Value",
                                            "example": 0
                                          },
                                          "maximum": {
                                            "type": "integer",
                                            "description": "Maximum Value",
                                            "example": 0
                                          },
                                          "target": {
                                            "type": "integer",
                                            "description": "Target Value",
                                            "example": 0
                                          },
                                          "unit": {
                                            "type": "string",
                                            "description": "Unit",
                                            "example": "instance"
                                          }
                                        }
                                      },
                                      "strategy": {
                                        "type": "object",
                                        "description": "Strategy",
                                        "properties": {
                                          "risk": {
                                            "type": "integer",
                                            "description": "Risk",
                                            "example": 100
                                          },
                                          "onDemandCount": {
                                            "type": "string",
                                            "description": "On Demand Count",
                                            "example": null
                                          },
                                          "availabilityVsCost": {
                                            "type": "string",
                                            "description": "Availability VS Cost",
                                            "example": "balanced"
                                          }
                                        }
                                      },
                                      "compute": {
                                        "type": "object",
                                        "description": "Compute",
                                        "properties": {
                                          "instanceTypes": {
                                            "type": "object",
                                            "properties": {
                                              "ondemand": {
                                                "type": "string",
                                                "description": "On Demand",
                                                "example": "m3.large"
                                              },
                                              "spot": {
                                                "type": "string",
                                                "description": "Spot",
                                                "example": [
                                                  "m3.large c3.large"
                                                ]
                                              }
                                            }
                                          },
                                          "availabilityZones": {
                                            "type": "object",
                                            "properties": {
                                              "name": {
                                                "type": "string",
                                                "description": "Name",
                                                "example": "us-west-2b"
                                              },
                                              "subnetIds": {
                                                "type": "string",
                                                "description": "Subnet IDs",
                                                "example": [
                                                  "subnet-657493"
                                                ]
                                              }
                                            }
                                          },
                                          "product": {
                                            "type": "string",
                                            "description": "Operatin System",
                                            "example": "Linux/UNIX"
                                          },
                                          "launchSpecification": {
                                            "type": "object",
                                            "properties": {
                                              "securityGroupIds": {
                                                "type": "string",
                                                "description": "Security Group IDs",
                                                "example": [
                                                  "sg-987126"
                                                ]
                                              },
                                              "monitoring": {
                                                "type": "boolean",
                                                "description": "Monitoring",
                                                "example": true
                                              },
                                              "imageId": {
                                                "type": "string",
                                                "description": "Image ID",
                                                "example": "ami-87236464"
                                              },
                                              "keyPair": {
                                                "type": "string",
                                                "description": "Key Pair",
                                                "example": "PairKey"
                                              },
                                              "userData": {
                                                "type": "string",
                                                "description": "User Data",
                                                "example": null
                                              }
                                            }
                                          }
                                        }
                                      },
                                      "scaling": {
                                        "type": "object",
                                        "properties": {
                                          "up": {
                                            "type": "object",
                                            "properties": {
                                              "policyName": {
                                                "type": "string",
                                                "description": "Policy Name",
                                                "example": "up Scaling Policy 1"
                                              },
                                              "metricName": {
                                                "type": "string",
                                                "description": "Metric Name",
                                                "example": "CPUUtilization"
                                              },
                                              "statistic": {
                                                "type": "string",
                                                "description": "Statistics",
                                                "example": "maximum"
                                              },
                                              "unit": {
                                                "type": "string",
                                                "description": "Unit",
                                                "example": "percent"
                                              },
                                              "stepAdjustments": {
                                                "type": "array",
                                                "items": {
                                                  "type": "object",
                                                  "properties": {
                                                    "action": {
                                                      "type": "object",
                                                      "example": {
                                                        "adjustment": "3",
                                                        "type": "adjustment"
                                                      }
                                                    },
                                                    "threshold": {
                                                      "type": "integer",
                                                      "description": "Step Threshold",
                                                      "example": 30
                                                    }
                                                  }
                                                }
                                              },
                                              "namespace": {
                                                "type": "string",
                                                "description": "Namespace",
                                                "example": "AWS/EC2"
                                              },
                                              "period": {
                                                "type": "integer",
                                                "description": "Period",
                                                "example": 300
                                              },
                                              "evaluationPeriods": {
                                                "type": "integer",
                                                "description": "Evaluation Period",
                                                "example": 3
                                              },
                                              "cooldown": {
                                                "type": "integer",
                                                "description": "Cool Down",
                                                "example": 60
                                              }
                                            }
                                          },
                                          "down": {
                                            "type": "object",
                                            "properties": {
                                              "policyName": {
                                                "type": "string",
                                                "description": "Policy Name",
                                                "example": "down Scaling Policy 1"
                                              },
                                              "metricName": {
                                                "type": "string",
                                                "description": "Metric Name",
                                                "example": "CPUUtilization"
                                              },
                                              "statistic": {
                                                "type": "string",
                                                "description": "Statistics",
                                                "example": "maximum"
                                              },
                                              "unit": {
                                                "type": "string",
                                                "description": "Unit",
                                                "example": "percent"
                                              },
                                              "threshold": {
                                                "type": "integer",
                                                "description": "Threshold",
                                                "example": 50
                                              },
                                              "adjustment": {
                                                "type": "integer",
                                                "description": "Adjustment",
                                                "example": 2
                                              },
                                              "namespace": {
                                                "type": "string",
                                                "description": "Namespace",
                                                "example": "AWS/EC2"
                                              },
                                              "period": {
                                                "type": "integer",
                                                "description": "Period",
                                                "example": 300
                                              },
                                              "evaluationPeriods": {
                                                "type": "integer",
                                                "description": "Evaluation Period",
                                                "example": 3
                                              },
                                              "cooldown": {
                                                "type": "integer",
                                                "description": "Cool Down",
                                                "example": 60
                                              },
                                              "dimensions": {
                                                "type": "array",
                                                "items": {
                                                  "type": "object",
                                                  "properties": {
                                                    "name": {
                                                      "type": "string",
                                                      "description": "Name",
                                                      "example": "InstanceId"
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      },
                                      "scheduling": {
                                        "type": "object",
                                        "properties": {
                                          "tasks": {
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "frequency": {
                                                  "type": "string",
                                                  "description": "Frequency",
                                                  "example": "weekly"
                                                },
                                                "taskType": {
                                                  "type": "string",
                                                  "description": "Task Type",
                                                  "example": "backup_ami"
                                                }
                                              }
                                            }
                                          }
                                        }
                                      },
                                      "thirdPartiesIntegration": {
                                        "type": "object"
                                      },
                                      "createdAt": {
                                        "type": "string",
                                        "description": "Created At",
                                        "example": "2016-02-16T06:35:03.000Z"
                                      },
                                      "updatedAt": {
                                        "type": "string",
                                        "description": "Updated At",
                                        "example": "2016-02-16T10:21:01.000Z"
                                      }
                                    }
                                  }
                                ]
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}": {
      "put": {
        "summary": "Update Elastigroup",
        "description": "Describe a specific Elastigroup JSON\n",
        "operationId": "elastigroupAwsUpdate",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "groupId",
            "example": "sig-12345",
            "description": "The Spot Elastigroup ID you want to update\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "autoApplyTags",
            "description": "Optionally update resource tags on the fly without performing a roll.\n",
            "schema": {
              "type": "boolean",
              "example": true,
              "default": false
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "AWS Elastigroup",
                "required": [
                  "group"
                ],
                "properties": {
                  "group": {
                    "type": "object",
                    "description": "Group",
                    "required": [
                      "name"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "AWS Elastigroup Name\n",
                        "example": "my-Elastigroup"
                      },
                      "description": {
                        "type": "string",
                        "description": "Describe your AWS Elastigroup\n",
                        "example": "This Elastigroup is used for Development"
                      },
                      "region": {
                        "type": "string",
                        "description": "The AWS region your group will be created in.\n This parameter is required if you specify subnets (through compute.subnetIds).\n This parameter is optional if you specify Availability Zones (through compute.availabilityZones).\n",
                        "example": "us-east-1"
                      },
                      "capacity": {
                        "type": "object",
                        "title": "Elastigroup Capacity",
                        "properties": {
                          "target": {
                            "type": "integer",
                            "description": "The number of instances to launch\n",
                            "example": 1
                          },
                          "minimum": {
                            "type": "integer",
                            "description": "The lower limit number of instances that you can scale down to\n",
                            "example": 0
                          },
                          "maximum": {
                            "type": "integer",
                            "description": "The upper limit number of instances that you can scale up to\n",
                            "example": 10
                          },
                          "unit": {
                            "type": "string",
                            "enum": [
                              "instance",
                              "weight"
                            ],
                            "readOnly": true,
                            "description": "The capacity unit to launch instances by.\nNote: for groups with integration to K8S / ECS weight option is not supported.\n",
                            "example": "instance"
                          }
                        }
                      },
                      "strategy": {
                        "type": "object",
                        "title": "Elastigroup Strategy",
                        "properties": {
                          "risk": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 100,
                            "example": 100,
                            "default": 0,
                            "description": "The percentage of Elastigroup that will run with spot market capacity\n"
                          },
                          "onDemandCount": {
                            "type": "integer",
                            "minimum": 0,
                            "example": 0,
                            "description": "Minimum number of instances that will always be on-demand\n"
                          },
                          "availabilityVsCost": {
                            "type": "string",
                            "enum": [
                              "costOriented",
                              "availabilityOriented",
                              "balanced",
                              "cheapest",
                              "equalAzDistribution"
                            ],
                            "default": "balanced",
                            "description": "How Elastigroup determines which instances to add and replace.\n(please read this article before using [Equal AZ Instance Distribution](https://docs.flexera.com/spot/elastigroup-for-aws/concepts/general-concepts/equal-az-distribution))\n"
                          },
                          "fallbackToOd": {
                            "type": "boolean",
                            "default": true,
                            "example": true,
                            "description": "When set to `true` Elastigroup will launch On Demand instances if no spot market is available\n"
                          },
                          "considerODPricing": {
                            "type": "boolean",
                            "default": false,
                            "example": false,
                            "description": "When the value is set to `true`, Elastigroup will prioritize launching On-Demand instances if they are found to be more cost-effective than available Spot markets.\n"
                          },
                          "utilizeReservedInstances": {
                            "type": "boolean",
                            "description": "In case of any available Reserved Instances, Elastigroup will utilize them before purchasing Spot instances\n",
                            "example": false
                          },
                          "utilizeCommitments": {
                            "type": "boolean",
                            "description": "If there are available Reserved Instances or Savings Plans, Elastigroup will utilize them before using Spot instances\n",
                            "example": false
                          },
                          "restrictSingleAz": {
                            "type": "boolean",
                            "description": "Elastigroup will automatically scale your instances in the most available and cost efficient availability zone. Every evaluation will be done when there are no active instances in the group.\n"
                          },
                          "drainingTimeout": {
                            "type": "integer",
                            "example": 120,
                            "description": "The time in seconds to allow the instance be drained from incoming TCP connections and detached from ELB before terminating it, during a scale down operation\n"
                          },
                          "maxReplacementsPercentage": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 100,
                            "example": 15,
                            "description": "The percentage of active instances that can be replaced in parallel\n"
                          },
                          "signals": {
                            "type": "array",
                            "description": "The signals defined for this group. For more information refer the below article: [Signals](https://docs.flexera.com/spot/elastigroup-for-aws/concepts/compute-concepts/using-signals-in-elastigroups)\n",
                            "items": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "description": "The name of the signal defined for the group.\n",
                                  "enum": [
                                    "INSTANCE_READY",
                                    "INSTANCE_READY_TO_SHUTDOWN"
                                  ]
                                },
                                "timeout": {
                                  "type": "integer",
                                  "minimum": 60,
                                  "maximum": 1800,
                                  "description": "The timeout in seconds to hold the instance until a signal is sent.\nIf no signal is sent the instance will be replaced (INSTANCE_READY) or we will terminate the instance (INSTANCE_READY_TO_SHUTDOWN) after the timeout.\n",
                                  "default": 1800,
                                  "example": 120
                                }
                              }
                            }
                          },
                          "persistence": {
                            "type": "array",
                            "description": "You can register persistence (Stateful) recovery arguments\n",
                            "items": {
                              "type": "object",
                              "properties": {
                                "shouldPersistPrivateIp": {
                                  "type": "boolean",
                                  "description": "Should the instance maintain its private IP\n",
                                  "example": true
                                },
                                "shouldPersistRootDevice": {
                                  "type": "boolean",
                                  "description": "Should the instance maintain its root device volumes\n",
                                  "example": true
                                },
                                "shouldPersistBlockDevices": {
                                  "type": "boolean",
                                  "description": "Should the instance maintain its Data volumes\n",
                                  "example": true
                                },
                                "blockDevicesMode": {
                                  "type": "string",
                                  "description": "Determine the way we attach the data volumes to the data devices\n",
                                  "enum": [
                                    "reattach",
                                    "onLaunch"
                                  ],
                                  "example": "reattach"
                                }
                              }
                            }
                          },
                          "revertToSpot": {
                            "type": "object",
                            "description": "Hold settings for strategy correction - replacing On-Demand for Spot instances\n",
                            "properties": {
                              "performAt": {
                                "type": "string",
                                "description": "Settings for maintenance strategy - possible values: timeWindow, never, always.\nperformAt of type: 'never' OR 'timeWindow' can only be applied to groups with \"availabilityOriented\" OR groups with \"persistence\",\nother groups allow either 'always' type or nothing which also means always.\n",
                                "enum": [
                                  "never",
                                  "always",
                                  "timeWindow"
                                ],
                                "example": "timeWindow",
                                "default": "always"
                              },
                              "timeWindows": {
                                "type": "array",
                                "description": "When performAt is 'timeWindow': must specify a list of 'timeWindows' with at least one time window Each string is in the format of - ddd:hh:mm-ddd:hh:mm\nddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat\nhh = hour 24 = 0 -23\nmm = minute = 0 - 59\n",
                                "items": {
                                  "type": "string",
                                  "example": "Mon:03:00-Wed:02:30"
                                }
                              }
                            }
                          },
                          "scalingStrategy": {
                            "type": "object",
                            "description": "Set termination policy\n",
                            "properties": {
                              "terminationPolicy": {
                                "type": "string",
                                "enum": [
                                  "default",
                                  "newestInstance"
                                ],
                                "example": "default"
                              }
                            }
                          }
                        }
                      },
                      "compute": {
                        "type": "object",
                        "title": "Elastigroup Compute",
                        "properties": {
                          "product": {
                            "type": "string",
                            "description": "Operation system type.\n",
                            "enum": [
                              "Linux/UNIX (Amazon VPC)",
                              "SUSE Linux (Amazon VPC)",
                              "Windows (Amazon VPC)",
                              "Red Hat Enterprise Linux (Amazon VPC)"
                            ],
                            "readOnly": true,
                            "example": "Linux/UNIX"
                          },
                          "elasticIps": {
                            "type": "array",
                            "description": "List of ElasticIPs Allocation Ids to associate to the group instances\n",
                            "items": {
                              "type": "string",
                              "example": "eipalloc-9d4e16f8"
                            }
                          },
                          "privateIps": {
                            "type": "array",
                            "description": "List of Private IPs to associate to the group instances.\nPlease note: This setting will only apply if strategy.persistence.shouldPersistPrivateIp is set to true.\n",
                            "items": {
                              "type": "string",
                              "default": "172.1.1.1"
                            }
                          },
                          "instanceTypes": {
                            "type": "object",
                            "description": "Instance Types\n",
                            "properties": {
                              "ondemand": {
                                "type": "string",
                                "description": "Available on demand instance type.\nNote: Either ondemand or onDemandTypes can be defined, but not both.\n",
                                "example": "m3.medium"
                              },
                              "onDemandTypes": {
                                "type": "array",
                                "description": "Available on demand instance types.\nNote: Either ondemand or onDemandTypes can be defined, but not both.\n",
                                "items": {
                                  "type": "string",
                                  "example": [
                                    "c3.large",
                                    "c4.large",
                                    "m3.large",
                                    "r3.large"
                                  ]
                                }
                              },
                              "spot": {
                                "type": "array",
                                "description": "Available Spot Instance types.  \nNote: Cannot be defined if 'resourceRequirements' is defined.\n",
                                "items": {
                                  "type": "string",
                                  "example": [
                                    "c3.large",
                                    "c4.large",
                                    "m3.large",
                                    "r3.large"
                                  ]
                                }
                              },
                              "resourceRequirements": {
                                "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/compute/properties/instanceTypes/properties/resourceRequirements"
                              },
                              "preferredSpot": {
                                "type": "array",
                                "description": "Prioritized subset of spot instance types. The list must be a subset of the selected spot instance types or \nmeet the resource requirements if defined.\n",
                                "items": {
                                  "type": "string",
                                  "example": [
                                    "c4.large"
                                  ]
                                }
                              },
                              "weights": {
                                "type": "array",
                                "description": "Custom weight for each instance type (only valid in weight capacity unit)\n",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "instanceType": {
                                      "type": "string",
                                      "description": "The instance type to customize its weight\n",
                                      "example": "c4.large"
                                    },
                                    "weightedCapacity": {
                                      "type": "integer",
                                      "description": "The weight\n",
                                      "example": 8
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "subnetIds": {
                            "type": "array",
                            "description": "A comma-separated list of subnet identifiers for your group.\nWhen this parameter is set, compute.availabilityZones should be left unused.\n",
                            "items": {
                              "type": "string",
                              "example": [
                                "subnet-4c1d1538",
                                "subnet-2791bb61",
                                "subnet-703a6f58",
                                "subnet-c62846fc"
                              ]
                            }
                          },
                          "availabilityZones": {
                            "type": "array",
                            "description": "One or more availability Zones for the group.\nWhen this parameter is set, compute.subnetIds should be left unused.\n",
                            "items": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "description": "The Availability Zone name\n",
                                  "example": "us-west-2a"
                                },
                                "subnetIds": {
                                  "type": "array",
                                  "description": "A comma-separated list of subnet identifiers for your group.\n",
                                  "items": {
                                    "type": "string",
                                    "example": [
                                      "subnet-4333093a"
                                    ]
                                  }
                                },
                                "placementGroupName": {
                                  "type": "string",
                                  "description": "specify a Placement Group name, the instances will be launched in the Placement Group for the AZ.\n"
                                }
                              }
                            }
                          },
                          "preferredAvailabilityZones": {
                            "type": "array",
                            "description": "The AZs to prioritize when launching Spot instances.\nIf no markets are available in the Preferred AZs, Spot instances are launched in the non-preferred AZs.\n* Must be a sublist of compute.AvailabilityZones\n* strategy.availabilityVsCost must not be equalAzDistribution\n",
                            "items": {
                              "type": "string",
                              "example": [
                                "us-east-1a",
                                "us-east-1b"
                              ]
                            }
                          },
                          "volumeAttachments": {
                            "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/compute/properties/volumeAttachments"
                          },
                          "launchSpecification": {
                            "type": "object",
                            "properties": {
                              "creditSpecification": {
                                "type": "object",
                                "description": "creditSpecification is a parameter that indicates in what mode t2/t3 instances will be launched with. It consists of one key: cpuCredits (String)\n",
                                "properties": {
                                  "cpuCredits": {
                                    "type": "string",
                                    "enum": [
                                      "unlimited",
                                      "standard"
                                    ],
                                    "example": "unlimited"
                                  }
                                }
                              },
                              "loadBalancersConfig": {
                                "type": "object",
                                "description": "Elastic Load Balancers configurations\n",
                                "properties": {
                                  "loadBalancers": {
                                    "type": "array",
                                    "description": "List of classic load balancers and/or application load balancer target groups\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "The AWS resource name. Required for Classic Load Balancer. Optional for Application Load Balancer.\n",
                                          "example": "MyTargetGroup"
                                        },
                                        "arn": {
                                          "type": "string",
                                          "description": "The AWS resource ARN (Required only for ALB target groups)\n",
                                          "example": "arn:aws:elasticloadbalancing:us-west-2:922761411234:targetgroup/MyTargetGroup/1fe63217f8ff1234"
                                        },
                                        "type": {
                                          "type": "string",
                                          "description": "The resource type.\n",
                                          "enum": [
                                            "CLASSIC",
                                            "TARGET_GROUP"
                                          ],
                                          "example": "TARGET_GROUP"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "itf": {
                                "title": "Intelligent Traffic Flow (ITF) Configuration",
                                "type": "object",
                                "description": "Contains the configuration details of Intelligent Traffic Flow (ITF).\n",
                                "properties": {
                                  "fixedTargetGroups": {
                                    "type": "boolean",
                                    "description": "Boolean to control whether to keep the set of target groups fixed. When set to true, all target groups will be created in advance upon create/update group, and will not be deleted even when not being used anymore.\n",
                                    "default": false,
                                    "example": false
                                  },
                                  "weightStrategy": {
                                    "type": "string",
                                    "description": "Distribution strategy (either 'vcpu' or 'custom'). 'Custom' strategy can be set only when the group is configured with custom weights.\n",
                                    "enum": [
                                      "vcpu",
                                      "custom"
                                    ],
                                    "default": "vcpu",
                                    "example": "custom"
                                  },
                                  "migrationHealthinessThreshold": {
                                    "type": "integer",
                                    "description": "Threshold for the minimum healthiness level of the target groups that is needed before activating the ITF rules. Integer representing the percentage of healthy instances within the target groups. Valid values: integer between 0-100.\n",
                                    "default": 50,
                                    "example": 80
                                  },
                                  "loadBalancers": {
                                    "type": "array",
                                    "description": "The load balancer associated with the ITF. Array with a single element.\n",
                                    "items": {
                                      "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/compute/properties/launchSpecification/properties/itf/properties/loadBalancers/items"
                                    }
                                  },
                                  "targetGroupConfig": {
                                    "title": "ITF Target Group Configuration",
                                    "type": "object",
                                    "description": "Contains the configuration details of an ITF target group.\n",
                                    "allOf": [
                                      {
                                        "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/compute/properties/launchSpecification/properties/itf/properties/targetGroupConfig/allOf/0"
                                      }
                                    ]
                                  }
                                }
                              },
                              "healthCheckType": {
                                "type": "string",
                                "description": "The service to use for the health check.\n",
                                "enum": [
                                  "ELB",
                                  "HCS",
                                  "TARGET_GROUP",
                                  "ECS_CLUSTER_INSTANCE",
                                  "EC2",
                                  "OPSWORKS",
                                  "K8S_NODE",
                                  "NOMAD_NODE"
                                ],
                                "example": "EC2"
                              },
                              "healthCheckGracePeriod": {
                                "type": "integer",
                                "description": "The amount of time, in seconds, after the instance has launched to starts and check its health.\n",
                                "default": 300,
                                "example": 600
                              },
                              "healthCheckUnhealthyDurationBeforeReplacement": {
                                "type": "integer",
                                "description": "The amount of time, in seconds, an existing instance should remain active after becoming unhealthy.\nAfter the set time out the instance will be replaced\n",
                                "example": 60
                              },
                              "securityGroupIds": {
                                "type": "array",
                                "description": "One or more security group IDs. In case of update it will override the existing Security Group with the new given array\n",
                                "items": {
                                  "type": "string",
                                  "example": [
                                    "sg-0dfc2c8760df6fec7"
                                  ]
                                }
                              },
                              "monitoring": {
                                "type": "boolean",
                                "description": "Describes whether instance Enhanced Monitoring is enabled\n",
                                "example": false
                              },
                              "ebsOptimized": {
                                "type": "boolean",
                                "description": "Enable EBS optimization for supported instance which is not enabled by default.\nNote - additional charges will be applied.\n",
                                "example": false
                              },
                              "imageId": {
                                "type": "string",
                                "description": "The ID of the image used to launch the instance.\n* The following instance types are supported by HVM image: M3, M4, C3, C4, D2, G2, R3, CC2, CC1, CG1, CR1.\n* The following instance types are supported by PV image: M1, M2, M3, C1, C3.\n* In case of conflict between Instance type to image type, an error message will be returned\n",
                                "example": "ami-01e24be29428c15b2"
                              },
                              "images": {
                                "type": "array",
                                "description": "An array of image objects. <br>\nElastigroup can be configured with either imageId or images, but not both. <br>\n* Valid values: null, or an array with at least 1 element.\n* Multiple AMIs aren't allowed with stateful groups / Stateful Node / Ocean\n  or with the following third-party integrations: ECS / Nomad / Docker Swarm / Kubernetes\n",
                                "items": {
                                  "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/compute/properties/launchSpecification/properties/images/items"
                                }
                              },
                              "keyPair": {
                                "type": "string",
                                "description": "Specify a Key Pair to attach to the instances\n",
                                "example": "labs-oregon"
                              },
                              "blockDeviceMappings": {
                                "type": "array",
                                "description": "Array list of block devices that are exposed to the instance, You can specify virtual devices and EBS volumes.\n",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "deviceName": {
                                      "type": "string",
                                      "description": "Set device name\n",
                                      "example": "/dev/xvdcz"
                                    },
                                    "ebs": {
                                      "type": "object",
                                      "description": "Set EBS properties\n",
                                      "properties": {
                                        "encrypted": {
                                          "type": "boolean",
                                          "example": true
                                        },
                                        "iops": {
                                          "type": "integer",
                                          "minimum": 0,
                                          "description": "Must be greater than or equal to 0\nexample: 0\n"
                                        },
                                        "dynamicIops": {
                                          "type": "object",
                                          "description": "Set dynamic IOPS properties. When using this object, you cannot use the 'iops' object. You must use one or the other.\n",
                                          "properties": {
                                            "baseSize": {
                                              "type": "integer",
                                              "description": "Initial size for IOPS.\n",
                                              "example": 50
                                            },
                                            "resource": {
                                              "type": "string",
                                              "enum": [
                                                "CPU",
                                                "MEMORY"
                                              ],
                                              "description": "",
                                              "example": "CPU"
                                            },
                                            "sizePerResourceUnit": {
                                              "type": "integer",
                                              "description": "Additional size per resource unit (in IOPS).\nFor example: if baseSize=50, and sizePerResourceUnit=20, and an instance with 2 CPU is launched - its IOPS size will be: 90\n",
                                              "example": 20
                                            }
                                          }
                                        },
                                        "kmsKeyId": {
                                          "type": "string",
                                          "example": "alias/aws/ebs"
                                        },
                                        "snapshotId": {
                                          "type": "string",
                                          "example": "snap-abcdefghi111110"
                                        },
                                        "throughput": {
                                          "type": "integer",
                                          "minimum": 125,
                                          "maximum": 1000,
                                          "example": 125,
                                          "description": "The amount of data transferred to or from a storage device per second, you can use this param just in a case that volumetype=‘gp3’.\n"
                                        },
                                        "volumeType": {
                                          "type": "string",
                                          "description": "Set volume type\n",
                                          "example": "gp2"
                                        },
                                        "deleteOnTermination": {
                                          "type": "boolean",
                                          "description": "Flag to delete the EBS on instance termination\n",
                                          "example": true
                                        },
                                        "volumeSize": {
                                          "type": "integer",
                                          "description": "Set volume size (in GB). When using this property - don't use dynamicVolumeSize.\nVolume size should be greater or equal than the size configured in the AMI\n",
                                          "example": 12
                                        },
                                        "dynamicVolumeSize": {
                                          "type": "object",
                                          "description": "Set dynamic volume size properties. When using this object, you cannot use volumeSize. You must use one or the other.\n",
                                          "properties": {
                                            "baseSize": {
                                              "type": "integer",
                                              "description": "Initial size for volume\n",
                                              "example": 50
                                            },
                                            "resource": {
                                              "type": "string",
                                              "example": "CPU"
                                            },
                                            "sizePerResourceUnit": {
                                              "type": "integer",
                                              "description": "Additional size per resource unit (in GB). For example: if baseSize=50, and sizePerResourceUnit=20, and an instance with 2 CPU is launched - its disk size will be: 90GB\n",
                                              "example": 20
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "networkInterfaces": {
                                "type": "array",
                                "description": "List of network interfaces in an EC2 instance.\nIf you define network interface, please pay attention to omit these properties from other sections in this JSON and set them here: subnetId - compute.availabilityZones\n",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "description": {
                                      "type": "string",
                                      "description": "The description of the network interface. Applies only if creating a network interface when launching an instance.\n"
                                    },
                                    "deviceIndex": {
                                      "type": "integer",
                                      "description": "The position of the network interface in the attachment order.\nA primary network interface has a device index of 0.\nIf you specify a network interface when launching an instance, you must specify the device index.\n",
                                      "example": 0
                                    },
                                    "secondaryPrivateIpAddressCount": {
                                      "type": "integer",
                                      "description": "The number of secondary private IPv4 addresses to assign to a network interface.\nWhen you specify a number of secondary IPv4 addresses, Amazon EC2 selects these IP addresses within the subnet's IPv4 CIDR range.\nYou can't specify this option and specify more than one private IP address using privateIpAddresses.\nThe number of IP addresses you can assign to a network interface varies by instance type.\nFor more information, see IP Addresses Per ENI Per Instance Type in the Amazon Virtual Private Cloud User Guide.\n"
                                    },
                                    "associatePublicIpAddress": {
                                      "type": "boolean",
                                      "description": "Indicates whether to assign a public IPv4 address to an instance you launch in a VPC.\nThe public IP address can only be assigned to a network interface for eth0, and can only be assigned to a new network interface, not an existing one.\nYou cannot specify more than one network interface in the request.\nIf launching into a default subnet, the default value is true.\n",
                                      "example": true
                                    },
                                    "deleteOnTermination": {
                                      "type": "boolean",
                                      "description": "If set to true, the interface is deleted when the instance is terminated.\nYou can specify true only if creating a new network interface when launching an instance.\n"
                                    },
                                    "networkInterfaceId": {
                                      "type": "string",
                                      "description": "The ID of the network interface. Used to attach the specified network interface to the instance.\n"
                                    },
                                    "privateIpAddresses": {
                                      "type": "array",
                                      "description": "One or more private IPv4 addresses to assign to the network interface.\nOnly one private IPv4 address can be designated as primary.\nYou cannot specify this option if you're launching more than one instance in a RunInstances request.\n",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "privateIpAddress": {
                                            "type": "string",
                                            "description": "The private IPv4 address.\n"
                                          },
                                          "primary": {
                                            "type": "boolean",
                                            "description": "Indicates whether the private IPv4 address is the primary private IPv4 address. Only one IPv4 address can be designated as primary.\n"
                                          }
                                        }
                                      }
                                    },
                                    "subnetId": {
                                      "type": "string",
                                      "description": "The ID of the subnet to associate with the network interface.\nRequired when creating a new Network Interface, and not attaching an existing one via networkInterfaceId.\n"
                                    },
                                    "associateIpv6Address": {
                                      "type": "boolean",
                                      "description": "Indicates whether to assign an IPv6 address. Amazon EC2 chooses the IPv6 addresses from the range of the subnet.\n"
                                    }
                                  }
                                }
                              },
                              "iamRole": {
                                "type": "object",
                                "description": "The instance profile iamRole\n",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "description": "The iamRole name\n",
                                    "example": "my-iamRole"
                                  }
                                }
                              },
                              "userData": {
                                "type": "string",
                                "format": "byte",
                                "description": "The Base64-encoded MIME user data to make available to the instances\n",
                                "example": "dXNlcmJhc2g2NGVuY29kZWQ="
                              },
                              "shutdownScript": {
                                "type": "string",
                                "format": "byte",
                                "description": "The Base64-encoded shutdown script to execute prior to instance termination. For more information please see: [Shutdown Script](https://docs.flexera.com/spot/integration-docs/elastigroup/concepts/compute-concepts/shutdown-scripts/)\n",
                                "example": "dXNlcmJhc2g2NGVuY29kZWQ="
                              },
                              "tags": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "tagKey": {
                                      "type": "string",
                                      "description": "The tag's key\n",
                                      "example": "Creator"
                                    },
                                    "tagValue": {
                                      "type": "string",
                                      "description": "The tag's value\n",
                                      "example": "John Doe"
                                    }
                                  }
                                }
                              },
                              "metadataOptions": {
                                "title": "Metadata Options",
                                "type": "object",
                                "description": "Optional field. Used for IMDSv2. In Create route can't be null. In Update route can be null.",
                                "required": [
                                  "httpTokens"
                                ],
                                "properties": {
                                  "httpTokens": {
                                    "title": "HTTP Tokens",
                                    "type": "string",
                                    "description": "Required for IMDSv2. Can’t be null in Create or Update. Values can be \"optional\" or \"required\".",
                                    "example": "optional"
                                  },
                                  "httpPutResponseHopLimit": {
                                    "type": "integer",
                                    "example": "33",
                                    "description": "An integer within 1,64 range (including).\nThe desired HTTP PUT response hop limit for instance metadata requests.\nThe larger the number, the further instance metadata requests can travel.\n"
                                  },
                                  "instanceMetadataTags": {
                                    "title": "Instance Metadata Tags",
                                    "type": "string",
                                    "enum": [
                                      "Enabled",
                                      "Disabled"
                                    ],
                                    "description": "Indicates whether access to instance tags from the instance metadata is enabled or disabled.\nCan’t be null.\n",
                                    "example": "Enabled"
                                  }
                                }
                              },
                              "cpuOptions": {
                                "title": "CPU options",
                                "type": "object",
                                "description": "Optional field. The CPU options for the instances that are launched within the group.",
                                "required": [
                                  "threadsPerCore"
                                ],
                                "properties": {
                                  "threadsPerCore": {
                                    "title": "thread per core",
                                    "type": "integer",
                                    "example": "1",
                                    "description": "The number of threads per CPU core.\nTo disable multithreading for the instances, specify a value of 1 .\nOtherwise, specify the default value of 2 .\n"
                                  }
                                }
                              },
                              "resourceTagSpecification": {
                                "type": "object",
                                "description": "Optional field. User will specified which resources should be tagged with group tags.",
                                "properties": {
                                  "volumes": {
                                    "type": "object",
                                    "description": "Optional field. Tag specification for Volume resources.",
                                    "properties": {
                                      "shouldTag": {
                                        "type": "boolean",
                                        "description": "Optional field. Volume resources will be tagged with group tags.",
                                        "default": false,
                                        "example": false
                                      }
                                    }
                                  },
                                  "snapshots": {
                                    "type": "object",
                                    "description": "Optional field. Tag specification for Snapshot resources.",
                                    "properties": {
                                      "shouldTag": {
                                        "type": "boolean",
                                        "description": "Optional field. Snapshot resources will be tagged with group tags.",
                                        "default": true,
                                        "example": true
                                      }
                                    }
                                  },
                                  "enis": {
                                    "type": "object",
                                    "description": "Optional field. Tag specification for ENI resources.",
                                    "properties": {
                                      "shouldTag": {
                                        "type": "boolean",
                                        "description": "Optional field. ENI resources will be tagged with group tags.",
                                        "default": false,
                                        "example": false
                                      }
                                    }
                                  },
                                  "amis": {
                                    "type": "object",
                                    "description": "Optional field. Tag specification for AMI resources.",
                                    "properties": {
                                      "shouldTag": {
                                        "type": "boolean",
                                        "description": "Optional field. AMI resources will be tagged with group tags.",
                                        "default": true,
                                        "example": true
                                      }
                                    }
                                  }
                                }
                              },
                              "autoHealing": {
                                "type": "boolean",
                                "description": "Optional field. Auto-healing replacement won't be triggered if this parameter value is \"false\".\nIn a case of a stateful group - no recycling will start if this parameter value is \"false\".\n",
                                "default": true,
                                "example": true
                              }
                            }
                          }
                        }
                      },
                      "scaling": {
                        "type": "object",
                        "title": "Elastigroup Scaling",
                        "properties": {
                          "up": {
                            "type": "array",
                            "items": {
                              "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/scaling/properties/up/items"
                            }
                          },
                          "down": {
                            "type": "array",
                            "items": {
                              "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/scaling/properties/down/items"
                            }
                          },
                          "multipleMetrics": {
                            "type": "object",
                            "properties": {
                              "metrics": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/scaling/properties/multipleMetrics/properties/metrics/items"
                                }
                              },
                              "expressions": {
                                "type": "array",
                                "items": {
                                  "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/scaling/properties/multipleMetrics/properties/expressions/items"
                                }
                              }
                            }
                          },
                          "target": {
                            "type": "array",
                            "items": {
                              "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/scaling/properties/target/items"
                            }
                          }
                        }
                      },
                      "scheduling": {
                        "type": "object",
                        "title": "Elastigroup Scheduling",
                        "description": "Schedule tasks to execute, using CRON expressions.\n",
                        "properties": {
                          "tasks": {
                            "type": "array",
                            "description": "The scheduling tasks for the group.\n",
                            "items": {
                              "type": "object",
                              "properties": {
                                "isEnabled": {
                                  "type": "boolean",
                                  "description": "Describes whether the task is enabled. When true the task should run when false it should not run.\n",
                                  "example": true
                                },
                                "startTime": {
                                  "type": "string",
                                  "description": "DATETIME in ISO-8601 format and is in UTC time. Sets a start time for scheduled actions.\nIf \"frequency\" or \"cronExpression\" are not used - the task will run only once at the start time and will then be deleted from the group configuration.\n",
                                  "example": "2018-05-23T10:55:09Z"
                                },
                                "frequency": {
                                  "type": "string",
                                  "description": "The recurrence frequency to run this task.\nOnly one of ‘frequency' or ‘cronExpression' should be used at a time\n",
                                  "enum": [
                                    "hourly",
                                    "daily",
                                    "weekly"
                                  ],
                                  "example": "hourly"
                                },
                                "cronExpression": {
                                  "type": "string",
                                  "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script.\nOnly one of ‘frequency' or ‘cronExpression' should be used at a time.\n",
                                  "example": "0 1 * * *"
                                },
                                "taskType": {
                                  "type": "string",
                                  "description": "The task type to run. For stateful groups, use only those who has a `stateful` prefix, or `backup_ami`. For non-stateful group, use the rest.\n",
                                  "enum": [
                                    "backup_ami",
                                    "scale",
                                    "scaleUp",
                                    "percentageScaleUp",
                                    "scaleDown",
                                    "percentageScaleDown",
                                    "roll",
                                    "clusterRoll (For ECS Integration)",
                                    "statefulUpdateCapacity",
                                    "statefulRecycle"
                                  ],
                                  "example": "scale"
                                },
                                "scaleTargetCapacity": {
                                  "type": "integer",
                                  "description": "The target capacity of the group.\nShould be used when choosing ‘taskType' of ‘scale'.\n"
                                },
                                "scaleMinCapacity": {
                                  "type": "integer",
                                  "description": "The min capacity of the group.\nShould be used when choosing ‘taskType' of ‘scale'.\n"
                                },
                                "scaleMaxCapacity": {
                                  "type": "integer",
                                  "description": "The max capacity of the group.\nRequired when ‘taskType' is ‘scale'.\n"
                                },
                                "targetCapacity": {
                                  "type": "integer",
                                  "description": "Set a new target capacity for the Elastigroup.\nRequired when ‘taskType' is ‘statefulUpdateCapacity'.\n"
                                },
                                "MinCapacity": {
                                  "type": "integer",
                                  "description": "Set a new minimum capacity for the Elastigroup.\nRequired when ‘taskType' is ‘statefulUpdateCapacity'.\n"
                                },
                                "MaxCapacity": {
                                  "type": "integer",
                                  "description": "Set a new maximum capacity for the Elastigroup.\nRequired when ‘taskType' is ‘statefulUpdateCapacity'.\n"
                                },
                                "batchSizePercentage": {
                                  "type": "integer",
                                  "description": "The percentage size of each batch in the scheduled deployment roll.\nRequired when the taskType is roll.\n"
                                }
                              }
                            }
                          }
                        }
                      },
                      "thirdPartiesIntegration": {
                        "type": "object",
                        "title": "Elastigroup Third Party Integrations",
                        "description": "All definitions for using third-party Integrations\n",
                        "properties": {
                          "ecs": {
                            "type": "object",
                            "description": "ECS integration object.\n",
                            "properties": {
                              "clusterName": {
                                "type": "string",
                                "example": "test-ecs",
                                "description": "ECS cluster name\n"
                              },
                              "autoScale": {
                                "type": "object",
                                "title": "ECS Autoscaler",
                                "description": "The ECS Autoscaler properties.\n",
                                "required": [
                                  "isEnabled"
                                ],
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "description": "Enable the ECS Autoscaler.\n",
                                    "example": true
                                  },
                                  "cooldown": {
                                    "type": "integer",
                                    "description": "Cooldown period between scaling actions. Value should be cooldown period in seconds, greater than 180.\n",
                                    "example": 300
                                  },
                                  "attributes": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string",
                                        "example": "the_key"
                                      },
                                      "value": {
                                        "type": "string",
                                        "example": "the_value"
                                      }
                                    }
                                  },
                                  "resourceLimits": {
                                    "type": "object",
                                    "description": "Optionally set upper and lower bounds on the resource usage of the cluster.\n",
                                    "properties": {
                                      "maxMemoryGib": {
                                        "type": "integer",
                                        "description": "The maximum memory in GiB units that can be allocated to the cluster. Minimum value: 1.\n",
                                        "example": 1
                                      },
                                      "maxVcpu": {
                                        "type": "integer",
                                        "description": "The maximum CPU in vCPU units that can be allocated to the cluster. Minimum value: 1.\n",
                                        "example": 1
                                      }
                                    }
                                  },
                                  "down": {
                                    "type": "object",
                                    "description": "Autoscaling scale down operations.\n",
                                    "properties": {
                                      "evaluationPeriods": {
                                        "type": "integer",
                                        "example": 4
                                      },
                                      "maxScaleDownPercentage": {
                                        "type": "integer",
                                        "description": "The maximum portion (as a %) of nodes that will be scaled down at once out of the total number of potential nodes to scale down.\nExample: If there are 10 nodes to scale down and the parameter is 50%, then only 5 nodes will be scaled down at once.\nThe other 5 nodes will be scaled down in the next autoscaling iteration.\n",
                                        "example": 20
                                      }
                                    }
                                  },
                                  "headroom": {
                                    "type": "object",
                                    "description": "Spare resource capacity management enabling fast assignment of pods without waiting for new resources to launch.\n",
                                    "properties": {
                                      "cpuPerUnit": {
                                        "type": "integer",
                                        "description": "Optionally configure the number of CPUs to allocate per headroom unit. CPUs are denoted in CPU units, where 1024 units = 1 vCPU.\n",
                                        "example": 2048
                                      },
                                      "memoryPerUnit": {
                                        "type": "integer",
                                        "description": "Optionally configure the amount of memory (MiB) to allocate per headroom unit.\n",
                                        "example": 3
                                      },
                                      "numOfUnits": {
                                        "type": "integer",
                                        "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                        "example": 2
                                      }
                                    }
                                  },
                                  "isAutoConfig": {
                                    "type": "boolean",
                                    "description": "Use automatic headroom. When set to true, the values under cluster.autoScaler.headroom are not effective, as Ocean configures and optimizes headroom automatically.\n",
                                    "example": false
                                  },
                                  "shouldScaleDownNonServiceTasks": {
                                    "type": "boolean",
                                    "description": "Option to scale down non-service tasks. If not set, Ocean does not scale down standalone tasks.\n",
                                    "default": false,
                                    "example": true
                                  },
                                  "enableAutomaticAndManualHeadroom": {
                                    "type": "boolean",
                                    "description": "When set to true, both automatic and per custom Virtual Node Group manual headroom to be saved concurrently and independently in the cluster. prerequisite: isAutoConfig must be true\n",
                                    "example": false
                                  }
                                }
                              },
                              "batch": {
                                "type": "object",
                                "properties": {
                                  "jobQueueNames": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "dumpy-big-processing"
                                      ]
                                    }
                                  }
                                }
                              },
                              "optimizeImages": {
                                "type": "object",
                                "properties": {
                                  "shouldOptimizeEcsAmi": {
                                    "type": "boolean",
                                    "example": true
                                  },
                                  "performAt": {
                                    "type": "string",
                                    "description": "Settings for maintenance strategy.\\\nperformAt of type: 'never' OR 'timeWindow' can only be applied to groups with \"availabilityOriented\" OR groups with \"persistence\",\\\nother groups allow either 'always' type or nothing which also means always.\n",
                                    "enum": [
                                      "never",
                                      "always",
                                      "timeWindow"
                                    ],
                                    "example": "timeWindow",
                                    "default": "always"
                                  },
                                  "timeWindows": {
                                    "type": "array",
                                    "description": "When performAt is 'timeWindow':\\\nmust specify a list of 'timeWindows' with at least one time window Each string is in the format of - ddd:hh:mm-ddd:hh:mm\n* ddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat\n* hh = hour 24 = 0 -23\n* mm = minute = 0 - 59\n",
                                    "items": {
                                      "type": "string",
                                      "example": "Mon:03:00-Wed:02:30"
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "rancher": {
                            "type": "object",
                            "description": "All definitions for using Rancher Labs integration.\n",
                            "properties": {
                              "masterHost": {
                                "type": "string",
                                "description": "Rancher master url\n",
                                "example": "http://myRancher.com:8080/v1"
                              },
                              "accessKey": {
                                "type": "string",
                                "description": "Rancher version\n",
                                "example": "1",
                                "default": "1"
                              },
                              "secretKey": {
                                "type": "string",
                                "example": "SECRET"
                              },
                              "version": {
                                "type": "string",
                                "example": 1
                              }
                            }
                          },
                          "kubernetes": {
                            "type": "object",
                            "properties": {
                              "integrationMode": {
                                "type": "string",
                                "example": "pod"
                              },
                              "clusterIdentifier": {
                                "type": "string",
                                "example": "test-k8s"
                              },
                              "autoScale": {
                                "type": "object",
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "example": true,
                                    "default": true
                                  },
                                  "cooldown": {
                                    "type": "integer",
                                    "example": 300
                                  },
                                  "down": {
                                    "type": "object",
                                    "description": "Auto Scaling scale down operations.\n",
                                    "properties": {
                                      "evaluationPeriods": {
                                        "type": "integer",
                                        "example": 5
                                      },
                                      "maxScaleDownPercentage": {
                                        "type": "integer",
                                        "description": "The maximum % of nodes that will be scaled down at once out of the total amount of potential nodes to scale down.\nexample: if 10 nodes can be scaled down, only 5 will be given 50% in this parameter.\nthe other 50% will be scaled down in the next autoscaling iteration.\n",
                                        "example": 70
                                      },
                                      "headroom": {
                                        "type": "object",
                                        "description": "Spare resource capacity management enabling fast assignment of Pods without waiting for new resources to launch.\n",
                                        "properties": {
                                          "cpuPerUnit": {
                                            "type": "integer",
                                            "description": "Optionally configure the number of CPUs to allocate per headroom unit. CPUs are denoted in CPU units, where 1024 units = 1 vCPU.\n",
                                            "example": 2048
                                          },
                                          "memoryPerUnit": {
                                            "type": "integer",
                                            "description": "Optionally configure the amount of memory (MiB) to allocate per headroom unit.\n",
                                            "example": 3
                                          },
                                          "numOfUnits": {
                                            "type": "integer",
                                            "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                            "example": 2
                                          },
                                          "gpuPerUnit": {
                                            "type": "integer",
                                            "example": 2
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "labels": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string",
                                          "example": "group, kops.k8s.io/instancegroup"
                                        },
                                        "value": {
                                          "type": "string",
                                          "example": "microservices"
                                        }
                                      }
                                    }
                                  },
                                  "isAutoConfig": {
                                    "type": "boolean",
                                    "example": false,
                                    "default": false
                                  }
                                }
                              }
                            }
                          },
                          "nomad": {
                            "type": "object",
                            "properties": {
                              "masterHost": {
                                "type": "string",
                                "example": "https://master.host.com"
                              },
                              "masterPort": {
                                "type": "integer",
                                "example": 443
                              },
                              "autoScale": {
                                "type": "object",
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "description": "Enable the Autoscaler.\n",
                                    "example": true
                                  },
                                  "cooldown": {
                                    "type": "integer",
                                    "description": "Cooldown period between scaling actions. Value should be cooldown period in seconds, greater than 180\n",
                                    "example": 180
                                  },
                                  "down": {
                                    "type": "object",
                                    "description": "Auto Scaling scale down operations.\n",
                                    "properties": {
                                      "evaluationPeriods": {
                                        "type": "integer",
                                        "example": 3
                                      }
                                    }
                                  },
                                  "headroom": {
                                    "type": "object",
                                    "description": "Spare resource capacity management enabling fast assignment of Pods without waiting for new resources to launch.\n",
                                    "properties": {
                                      "cpuPerUnit": {
                                        "type": "integer",
                                        "description": "Optionally configure the number of CPUs to allocate per headroom unit. CPUs are denoted in CPU units, where 1024 units = 1 vCPU.\n",
                                        "example": 2048
                                      },
                                      "memoryPerUnit": {
                                        "type": "integer",
                                        "description": "Optionally configure the amount of memory (MiB) to allocate per headroom unit.\n",
                                        "example": 3
                                      },
                                      "numOfUnits": {
                                        "type": "integer",
                                        "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                        "example": 2
                                      }
                                    }
                                  },
                                  "constraints": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string",
                                          "example": "${node.class}"
                                        },
                                        "value": {
                                          "type": "string",
                                          "example": "value"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "aclToken": {
                                "type": "string",
                                "example": 123
                              },
                              "tlsConfig": {
                                "type": "object",
                                "description": "Configuration object for TLS integration. (optional)\n",
                                "properties": {
                                  "tlsEnabled": {
                                    "type": "boolean",
                                    "description": "When true, all communication to the master is with TLS. (required)\n",
                                    "example": true
                                  },
                                  "privateKey": {
                                    "type": "string",
                                    "description": "A generated client private key. (required)\n",
                                    "example": "PRIVATE KEY CERTIFICATE STR"
                                  },
                                  "certificate": {
                                    "type": "string",
                                    "description": "The certificates chain, first the client certificate then the ca certificate. (required)\n",
                                    "example": "PUBLIC KEY CERTIFICATE STR"
                                  }
                                }
                              }
                            }
                          },
                          "route53": {
                            "type": "object",
                            "description": "Route53 integration object.\n",
                            "properties": {
                              "domains": {
                                "type": "array",
                                "description": "Route53 domain configurations.\n",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "hostedZoneId": {
                                      "type": "string",
                                      "description": "The Route53 Hosted Zone ID for the registered domain.\n",
                                      "example": "Z3UFMBCGJMYLUT"
                                    },
                                    "spotinstAccountId": {
                                      "type": "string",
                                      "description": "The Spot account ID that is linked to the AWS account that holds the Route53 hosted Zone ID.\nThe default is the user Spot account provided as a URL parameter.\n",
                                      "example": "act-1234abcd"
                                    },
                                    "recordSetType": {
                                      "type": "string",
                                      "description": "Set the type of recordSet to update.\nValid values:\n* \"a\" - means register and de-register of instances done by IP address (IPv4).\nWhen it is \"a\" you should also specify usePublicIp.\n* \"cname\" - register and de-register of instances done by CNAME. When it is \"cname\", you should also specify usePublicDns.\n",
                                      "enum": [
                                        "a",
                                        "cname"
                                      ],
                                      "example": "a",
                                      "default": "a"
                                    },
                                    "recordSets": {
                                      "type": "array",
                                      "description": "List of record sets.\n",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "name": {
                                            "type": "string",
                                            "description": "Name of the recordSet.\n",
                                            "example": "testcname.spot.io."
                                          },
                                          "usePublicIp": {
                                            "type": "boolean",
                                            "description": "Defines whether to use public or private IP. Relevant only when recordSetType=a.\n",
                                            "example": true,
                                            "default": false
                                          },
                                          "usePublicDns": {
                                            "type": "boolean",
                                            "description": "Defines whether to use a public DNS or private DNS in the instance registration process.\nRelevant only when recordSetType=cname.\n* False=Create a new weighted CNAME recordset with same name and the instance Private DNS.\n* True=instances should be registered with public DNS.\n",
                                            "example": true,
                                            "default": false
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "dockerSwarm": {
                            "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/thirdPartiesIntegration/properties/dockerSwarm"
                          },
                          "jenkins": {
                            "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/thirdPartiesIntegration/properties/jenkins"
                          }
                        }
                      },
                      "logging": {
                        "type": "object",
                        "title": "Logging configuration",
                        "properties": {
                          "export": {
                            "type": "object",
                            "title": "Logging Export Configuration.",
                            "properties": {
                              "s3": {
                                "type": "object",
                                "title": "Logging S3 Export configuration.",
                                "description": "Exports Elastigroup logs to the S3 bucket and subdir configured on the S3 [data integration](/#operation/DataIntegrationCreate) given.\nEach file contains logs of 3 minutes where each log is separated by a new line and saved as a JSON.\nThe file formats are `subdir/accountId_groupId_groupName_startTime.log`.\nIf no subdir was configured, the files will be saved in the root of the bucket.\n",
                                "required": [
                                  "id"
                                ],
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "The identifier of The S3 data integration to export the logs to.",
                                    "example": "di-123"
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "createdAt": {
                        "type": "string",
                        "readOnly": true,
                        "title": "Creation Time Indicator",
                        "description": "Creation Time Indicator",
                        "example": "2020-10-01T05:23:59.302Z"
                      },
                      "updatedAt": {
                        "type": "string",
                        "readOnly": true,
                        "title": "Update Time Indicator",
                        "description": "Update Time Indicator",
                        "example": "2020-10-01T05:23:59.302Z"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1aws~1ec2~1group/post/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Elastigroup",
        "description": "Delete an Elastigroup AWS\n",
        "operationId": "elastigroupAwsDelete",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Elastigroup Delete",
                    "properties": {
                      "statefulDeallocation": {
                        "type": "object",
                        "title": "Stateful deallocation options",
                        "properties": {
                          "shouldDeleteImages": {
                            "type": "boolean",
                            "default": false,
                            "example": false,
                            "description": "For stateful groups, removes persistent images\n"
                          },
                          "shouldDeleteNetworkInterfaces": {
                            "type": "boolean",
                            "default": true,
                            "example": true,
                            "description": "For stateful groups, removes network interfaces\n"
                          },
                          "shouldDeleteVolumes": {
                            "type": "boolean",
                            "default": false,
                            "example": false,
                            "description": "For stateful groups, removes persistent volumes\n"
                          },
                          "shouldDeleteSnapshots": {
                            "type": "boolean",
                            "default": false,
                            "example": false,
                            "description": "For stateful groups, removes snapshots\n"
                          }
                        }
                      },
                      "beanstalk": {
                        "type": "object",
                        "title": "Beanstalk Dellocation Options",
                        "properties": {
                          "rollbackToAsg": {
                            "type": "boolean",
                            "example": true,
                            "default": true,
                            "description": "For groups with Beanstalk integration, roll back the attached ASG to the state prior to integration.\n"
                          }
                        }
                      },
                      "amiBackup": {
                        "type": "object",
                        "title": "AMI Dellocation Options",
                        "properties": {
                          "shouldDeleteImages": {
                            "type": "boolean",
                            "example": false,
                            "default": false,
                            "description": "Mark if images collected during AMI Auto Backup should be deleted during group deletion\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "3b750eff-3940-46b3-a309-aa2b415272fd",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-98765",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "DELETE",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-06-20T11:35:01.745Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Elastigroup",
        "description": "Describe a specific Elastigroup JSON\n",
        "operationId": "elastigroupAwsListElastigroup",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123456789",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "List Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "67582d0c-108b-4ef7-9fdc-d39678a30844",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-1234567",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-01-07T07:30:58.622Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:aws:ec2:group",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "title": "ID",
                                    "example": "sig-1234567"
                                  },
                                  "name": {
                                    "type": "string",
                                    "title": "Name",
                                    "example": "EG"
                                  },
                                  "description": {
                                    "type": "string",
                                    "title": "Validation",
                                    "example": "validation"
                                  },
                                  "capacity": {
                                    "type": "object",
                                    "title": "Capacity",
                                    "properties": {
                                      "minimum": {
                                        "type": "integer",
                                        "title": "Min Capacity Amount",
                                        "example": 1
                                      },
                                      "maximum": {
                                        "type": "integer",
                                        "title": "Max Capacity Amount",
                                        "example": 1
                                      },
                                      "target": {
                                        "type": "integer",
                                        "title": "Target Amount",
                                        "example": 1
                                      },
                                      "unit": {
                                        "type": "string",
                                        "title": "Unit",
                                        "example": "instance"
                                      }
                                    }
                                  },
                                  "strategy": {
                                    "type": "object",
                                    "title": "Strategy",
                                    "properties": {
                                      "risk": {
                                        "type": "integer",
                                        "title": "Risk",
                                        "example": 100
                                      },
                                      "onDemandCount": {
                                        "type": "integer",
                                        "title": "On Demand Count",
                                        "example": null
                                      },
                                      "availabilityVsCost": {
                                        "type": "string",
                                        "title": "Availability VS Cost",
                                        "example": "balanced"
                                      },
                                      "lifetimePeriod": {
                                        "type": "string",
                                        "title": "Life Time Period",
                                        "example": "days"
                                      },
                                      "fallbackToOd": {
                                        "type": "boolean",
                                        "title": "Fallback To On-Demand",
                                        "example": true
                                      },
                                      "persistence": {
                                        "type": "object",
                                        "title": "Fallback To On-Demand"
                                      },
                                      "revertToSpot": {
                                        "type": "object",
                                        "title": "Revert To Spot",
                                        "properties": {
                                          "performAt": {
                                            "type": "string",
                                            "title": "Perform At",
                                            "example": "always"
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "compute": {
                                    "type": "object",
                                    "title": "Compute",
                                    "properties": {
                                      "instanceTypes": {
                                        "type": "object",
                                        "title": "Insatnce Types",
                                        "properties": {
                                          "ondemand": {
                                            "type": "string",
                                            "title": "On Demand",
                                            "example": "c3.4xlarge"
                                          },
                                          "spot": {
                                            "type": "string",
                                            "title": "On Demand",
                                            "example": [
                                              "c3.2xlarge",
                                              "c4.2xlarge"
                                            ]
                                          }
                                        }
                                      },
                                      "availabilityZones": {
                                        "type": "object",
                                        "title": "Availability Zones",
                                        "properties": {
                                          "name": {
                                            "type": "string",
                                            "title": "Name",
                                            "example": "eu-west-1b"
                                          },
                                          "subnetIds": {
                                            "type": "string",
                                            "title": "SubnetIds",
                                            "example": [
                                              "eu-west-1b"
                                            ]
                                          }
                                        }
                                      },
                                      "product": {
                                        "type": "object",
                                        "title": "Product",
                                        "example": "Linux/UNIX (Amazon VPC)"
                                      },
                                      "launchSpecification": {
                                        "type": "object",
                                        "title": "Virtual Node Group",
                                        "properties": {
                                          "loadBalancerNames": {
                                            "type": "string",
                                            "title": "Load Balancer Names",
                                            "example": null
                                          },
                                          "loadBalancersConfig": {
                                            "type": "object",
                                            "title": "Load Balancers Config",
                                            "properties": {
                                              "loadBalancers": {
                                                "type": "string",
                                                "title": "Load Balancer Names",
                                                "example": null
                                              }
                                            }
                                          },
                                          "healthCheckGracePeriod": {
                                            "type": "integer",
                                            "title": "Health Check Grace Period",
                                            "example": 300
                                          },
                                          "securityGroupIds": {
                                            "type": "string",
                                            "title": "Security Groups IDs",
                                            "example": [
                                              "sg-1234567"
                                            ]
                                          },
                                          "monitoring": {
                                            "type": "boolean",
                                            "title": "Monitoring",
                                            "example": false
                                          },
                                          "ebsOptimized": {
                                            "type": "boolean",
                                            "title": "EBS Optimized",
                                            "example": false
                                          },
                                          "imageId": {
                                            "type": "boolean",
                                            "title": "Image ID",
                                            "example": "ami-1234567"
                                          },
                                          "iamRole": {
                                            "type": "object",
                                            "title": "IAM Role",
                                            "properties": {
                                              "name": {
                                                "type": "string",
                                                "title": "Name",
                                                "example": null
                                              },
                                              "arn": {
                                                "type": "string",
                                                "title": "ARN",
                                                "example": "arn:aws:iam::1234356789:instance-profile/Loader"
                                              }
                                            }
                                          },
                                          "keyPair": {
                                            "type": "string",
                                            "title": "Key Pair",
                                            "example": "PA"
                                          },
                                          "userData": {
                                            "type": "string",
                                            "title": "User Data",
                                            "example": "sldkfoisnfgodng"
                                          },
                                          "shutdownScript": {
                                            "type": "string",
                                            "title": "Shut Down Script",
                                            "example": null
                                          },
                                          "tags": {
                                            "type": "object",
                                            "title": "Tags",
                                            "properties": {
                                              "tagKey": {
                                                "type": "string",
                                                "title": "Tag Key",
                                                "example": "Env"
                                              },
                                              "tagValue": {
                                                "type": "string",
                                                "title": "Tag Value",
                                                "example": "TEST"
                                              }
                                            }
                                          },
                                          "tenancy": {
                                            "type": "string",
                                            "title": "Tenancy",
                                            "example": "default"
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "scaling": {
                                    "type": "object",
                                    "title": "Scaling"
                                  },
                                  "scheduling": {
                                    "type": "object",
                                    "title": "Scheduling",
                                    "properties": {
                                      "tasks": {
                                        "type": "array",
                                        "title": "Tasks",
                                        "items": {
                                          "anyOf": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "frequency": {
                                                  "type": "boolean",
                                                  "title": "Frequency",
                                                  "example": "hourly"
                                                },
                                                "taskType": {
                                                  "type": "string",
                                                  "title": "Task Type",
                                                  "example": "backup_ami"
                                                }
                                              }
                                            },
                                            {
                                              "type": "object",
                                              "properties": {
                                                "isEnabled": {
                                                  "type": "boolean",
                                                  "title": "Is Enabled",
                                                  "example": true
                                                },
                                                "taskType": {
                                                  "type": "boolean",
                                                  "title": "Task Type",
                                                  "example": "scale"
                                                },
                                                "cronExpression": {
                                                  "type": "string",
                                                  "title": "Cron Expression",
                                                  "example": "55 19 * * 0-4"
                                                },
                                                "scaleTargetCapacity": {
                                                  "type": "integer",
                                                  "title": "Scale Target Capacity",
                                                  "example": 1
                                                },
                                                "scaleMinCapacity": {
                                                  "type": "integer",
                                                  "title": "Scale Min Capacity",
                                                  "example": 1
                                                },
                                                "scaleMaxCapacity": {
                                                  "type": "integer",
                                                  "title": "Scale Max Capacity",
                                                  "example": 1
                                                }
                                              }
                                            },
                                            {
                                              "type": "object",
                                              "properties": {
                                                "groupId": {
                                                  "type": "string",
                                                  "title": "Group Id",
                                                  "example": "sig-12345"
                                                },
                                                "eventType": {
                                                  "type": "string",
                                                  "title": "Event Type",
                                                  "example": "Scale"
                                                },
                                                "createdAt": {
                                                  "type": "string",
                                                  "title": "Created At",
                                                  "example": "2016-01-21T16:51:09.000+0000"
                                                },
                                                "subEvents": {
                                                  "type": "object",
                                                  "title": "Sub Event",
                                                  "properties": {
                                                    "type": {
                                                      "type": "string",
                                                      "title": "Type",
                                                      "example": "scaleUp"
                                                    },
                                                    "terminatedSpots": {
                                                      "type": "string",
                                                      "example": [
                                                        {
                                                          "spotInstanceRequestId": "sir-029404xk"
                                                        },
                                                        {
                                                          "instanceId": "i-7fb4facc"
                                                        }
                                                      ]
                                                    },
                                                    "terminatedInstances": {
                                                      "type": "array",
                                                      "items": {
                                                        "type": "string"
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          ]
                                        }
                                      }
                                    }
                                  },
                                  "thirdPartiesIntegration": {
                                    "type": "object",
                                    "title": "Third Parties Integration"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "title": "Created At",
                                    "example": "2015-10-23T09:00:00.000Z"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "title": "Updated At",
                                    "example": "2018-08-01T14:11:39.000Z"
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/statefulInstance": {
      "get": {
        "summary": "List Stateful Instances",
        "description": "List all stateful instances associated with the Elastigroup\n",
        "operationId": "listStatefulInstances",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "groupId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "AWS Elastigroup ID\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "example": "ssi-046b119c",
                                    "description": "ssi-046b119c\n"
                                  },
                                  "instanceId": {
                                    "type": "string",
                                    "example": "i-08878aad7f35d20f5",
                                    "description": "i-08878aad7f35d20f5\n"
                                  },
                                  "privateIp": {
                                    "type": "string",
                                    "example": "172.31.30.122",
                                    "description": "172.31.30.122\n"
                                  },
                                  "imageId": {
                                    "type": "string",
                                    "example": "ami-082b5a644766e0e6f",
                                    "description": "ami-082b5a644766e0e6f\n"
                                  },
                                  "state": {
                                    "type": "string",
                                    "example": "ACTIVE",
                                    "enum": [
                                      "ACTIVE",
                                      "PAUSE",
                                      "PAUSING",
                                      "PAUSED",
                                      "RESUME",
                                      "RESUMING",
                                      "RECYCLE",
                                      "RECYCLING",
                                      "DEALLOCATE",
                                      "DEALLOCATING",
                                      "DEALLOCATED",
                                      "ERROR"
                                    ],
                                    "description": "Possible values: <ul>ACTIVE The sateful instance is running.</li> <li>PAUSE Initiating a Pause action.</li> <li>PAUSING Pause in progress.</li> <li>PAUSED Stateful instance is Paused.</li> <li>RESUME Initiating a Resume action.</li> <li>RESUMING Resume in progress.</li> <li>RECYCLE Initiating a Recycle process.</li> <li>RECYCLING Recycle in progress.</li> <li>DEALLOCATE Initiating a Deallocate process.</li> <li>DEALLOCATING Deallocation in progress.</li> <li>DEALLOCATED Stateful instance is Deallocated.</li> <li>ERROR Error state.</ul>\n"
                                  },
                                  "devices": {
                                    "type": "array",
                                    "items": {
                                      "properties": {
                                        "deviceName": {
                                          "type": "string",
                                          "example": "/dev/xvda",
                                          "description": "/dev/xvda\n"
                                        },
                                        "volumeId": {
                                          "type": "string",
                                          "example": "vol-0bb1c83fb203ad686",
                                          "description": "vol-0bb1c83fb203ad686\n"
                                        },
                                        "snapshotId": {
                                          "type": "string",
                                          "example": "snap-0a2803e5e45d63c3a",
                                          "description": "snap-0a2803e5e45d63c3a\n"
                                        }
                                      }
                                    }
                                  },
                                  "launchedAt": {
                                    "type": "string",
                                    "example": "2019-12-10T08:01:43.000Z",
                                    "description": "2019-12-10T08:01:43.000Z\n"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2019-12-10T08:02:16.000Z",
                                    "description": "2019-12-10T08:02:16.000Z\n"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/statefulInstance/{statefulInstanceId}/pause": {
      "put": {
        "summary": "Pause Stateful Instance",
        "description": "Pause a stateful instance\n",
        "operationId": "pauseStatefulInstance",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1statefulInstance/get/parameters/1"
          },
          {
            "in": "path",
            "name": "statefulInstanceId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "ssi-227a0005",
            "description": "Stateful instance ID\n"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/statefulInstance/{statefulInstanceId}/resume": {
      "put": {
        "summary": "Resume Stateful Instance",
        "description": "Resume a stateful instance\n",
        "operationId": "resumeStatefulInstance",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1statefulInstance/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1statefulInstance~1%7BstatefulInstanceId%7D~1pause/put/parameters/2"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/statefulInstance/{statefulInstanceId}/recycle": {
      "put": {
        "summary": "Recycle Stateful Instance",
        "description": "Recycle a stateful instance AWS\n",
        "operationId": "elastigroupAwsRecycleStatefulInstance",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1statefulInstance/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1statefulInstance~1%7BstatefulInstanceId%7D~1pause/put/parameters/2"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/statefulInstance/{statefulInstanceId}/deallocate": {
      "put": {
        "summary": "De-allocate Stateful Instance",
        "description": "De-allocate a stateful instance – delete all the resources associated with the instance (network interface, snapshots, volumes)\n",
        "operationId": "elastigroupAwsDeAllocateStatefulInstance",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1statefulInstance/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1statefulInstance~1%7BstatefulInstanceId%7D~1pause/put/parameters/2"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/statefulInstance/{statefulInstanceId}/volume/{volumeId}": {
      "delete": {
        "summary": "Delete Volume in a Stateful Instance",
        "description": "Delete a Volume that is part of a paused stateful instance\n",
        "operationId": "deleteVolumeStatefulInstance",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1statefulInstance/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1statefulInstance~1%7BstatefulInstanceId%7D~1pause/put/parameters/2"
          },
          {
            "in": "path",
            "name": "volumeId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "vol-0faa4b2957a3d59c8",
            "description": "Volume ID\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Delete Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "3b750eff-3940-46b3-a309-aa2b415272fd",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-98765/statefulInstance/ssi-0d29fe12/volume/vol-0faa4b2957a3d59c8",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "DELETE",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2021-11-03T11:02:55.608Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/statefulMigrationGroup": {
      "post": {
        "summary": "Import Stateful Instance",
        "description": "Create a new Stateful Elastigroup – this Elastigroup will have the same configuration and state of the imported instance.\n",
        "operationId": "importStatefulInstance",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "statefulMigrationGroup"
                    ],
                    "properties": {
                      "statefulMigrationGroup": {
                        "type": "object",
                        "required": [
                          "shouldKeepPrivateIp",
                          "originalInstanceId",
                          "name"
                        ],
                        "properties": {
                          "originalInstanceId": {
                            "type": "string",
                            "example": "i-123c53d9f152a1234",
                            "description": "The originating Instance ID. This instance will be imported along with its State.\n"
                          },
                          "shouldKeepPrivateIp": {
                            "type": "boolean",
                            "example": "false",
                            "description": "Setting this value to true will maintain the initial instance private IP. This will also require that the original instance be terminated in the import process incurring maintenance time. Note: This value must be false if you would like to configure availability zones and subnet ids.\n"
                          },
                          "shouldTerminateInstance": {
                            "type": "boolean",
                            "description": "Decide if the instance termination should be automatic or manual. True = automatic termination. False = manual termination.\n",
                            "example": true
                          },
                          "name": {
                            "type": "string",
                            "example": "MyNewElastigroup",
                            "description": "Specify the new Elastigroup name.\n"
                          },
                          "product": {
                            "type": "string",
                            "example": "Linux/UNIX (Amazon VPC)",
                            "description": "Operation system type. Possible values: Linux/UNIX | SUSE | Linux Windows | Linux/UNIX (Amazon VPC) | SUSE Linux (Amazon VPC) | Windows (Amazon VPC).\n"
                          },
                          "spotInstanceTypes": {
                            "type": "array",
                            "description": "An Array holding the types of instances to be used in the Elastigroup.\n",
                            "items": {
                              "type": "string",
                              "example": "m3.large"
                            }
                          },
                          "region": {
                            "type": "string",
                            "example": "us-west-2",
                            "description": "Specify the AWS Region the instance is running in and the new Elastigroup will be created in.\n"
                          },
                          "availabilityZones": {
                            "type": "array",
                            "description": "An Array holding an object of availabilityZones, this configures the availability zones the group may launch instances in. If this is not passed, the availability zone configuration is taken from the imported instance. Note: This field must be null if statefulMigrationGroup.shouldKeepPrivateIp is true, and must have a minimum of one availability zone.\n",
                            "items": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "example": "us-west-2b",
                                  "description": "This is the name of the Availability Zone, must be a valid availability zone name.\n"
                                },
                                "subnetIds": {
                                  "type": "array",
                                  "description": "This is the ids of the subnets, if this is not defined, then the default subnet for the availability zone is used.\n                Note: This field must be a valid subnet id, this field may be null.\n",
                                  "items": {
                                    "type": "string",
                                    "example": "subnet-12345678"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "example": "smg-7f041234"
                                  },
                                  "groupId": {
                                    "type": "string",
                                    "example": "sig-1ed12345"
                                  },
                                  "state": {
                                    "type": "string",
                                    "example": "MIGRATE_START"
                                  },
                                  "data": {
                                    "type": "object",
                                    "properties": {
                                      "originalInstanceId": {
                                        "type": "string",
                                        "example": "i-0a9c53d9f15212345"
                                      },
                                      "shouldKeepPrivateIp": {
                                        "type": "boolean",
                                        "example": false
                                      },
                                      "shouldTerminateInstance": {
                                        "type": "boolean",
                                        "example": true
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:statefulMigrationGroup"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/statefulMigrationGroup/{statefulMigrationGroupId}": {
      "get": {
        "summary": "Get Stateful Import Status",
        "description": "Get the current status of the import process. Possible values are: <ul> <li>MIGRATE_PREPARE_AWS_INSTANCE</li> <li>MIGRATE_CREATE_IMAGE</li> <li>MIGRATE_AWAIT_FOR_IMAGE</li> <li>MIGRATE_AWAIT_USER_ACTION</li> <li>MIGRATE_TERMINATE_INSTANCE</li> <li>MIGRATE_AWAIT_INSTANCE_TERMINATION</li> <li>MIGRATE_UPDATE_GROUP</li> <li>MIGRATE_LAUNCH_INSTANCE</li> <li>MIGRATE_AWAIT_INSTANCE_RUNNING</li> <li>MIGRATE_RESUME_STATEFUL_INSTANCE</li> <li>MIGRATE_AWAIT_STATEFUL_INSTANCE_RUNNING</li> <li>MIGRATE_CANCEL</li> <li>MIGRATE_FINISH</li> <li>MIGRATE_ERROR</li>\n",
        "operationId": "getStatefulImportStatus",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "statefulMigrationGroupId",
            "schema": {
              "type": "string"
            },
            "example": "smg-7f041234",
            "required": true,
            "description": "The Process ID you want to query\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "statefulMigrationId": {
                                    "type": "string",
                                    "description": "smg-07791234\n"
                                  },
                                  "groupId": {
                                    "type": "string",
                                    "description": "sig-cc6b1234\n"
                                  },
                                  "instanceId": {
                                    "type": "string",
                                    "description": "i-05ab1b1c2b95a1234\n"
                                  },
                                  "state": {
                                    "type": "string",
                                    "description": "MIGRATE_START\n"
                                  },
                                  "stateDescription": {
                                    "type": "string",
                                    "description": "Creating an image from the instance, Instance Id: i-05ab1b1c2b95a1234\n"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Stateful Import Status",
        "description": "Cancel the ongoing stateful import\n",
        "operationId": "deleteStatefulImportStatus",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "statefulMigrationGroupId",
            "schema": {
              "type": "string"
            },
            "example": "smg-7f041234",
            "required": true,
            "description": "The Process ID you want to delete"
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "smg-07791234\n"
                                  },
                                  "groupId": {
                                    "type": "string",
                                    "description": "sig-cc6b1234\n"
                                  },
                                  "state": {
                                    "type": "string",
                                    "description": "MIGRATE_CANCEL\n"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/statefulMigrationGroup/{statefulMigrationGroupId}/userAction": {
      "post": {
        "summary": "Terminate Stateful Instance During Import Process",
        "description": "Manually terminate the source stateful instance during an stateful instance import.\n",
        "operationId": "elastigroupAwsTerminateStatefulInstanceDuringImportProcess",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "statefulMigrationGroupId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The Process ID you want to terminate\n"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "userAction": {
                        "type": "object",
                        "properties": {
                          "type": {
                            "type": "string",
                            "example": "terminate",
                            "description": "Valid values: \"terminate\"\n"
                          }
                        }
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "userAction": {
                        "type": "object"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "example": "smg-63d3c336"
                                  },
                                  "groupId": {
                                    "type": "string",
                                    "example": "sig-de019081"
                                  },
                                  "state": {
                                    "type": "string",
                                    "example": "MIGRATE_TERMINATE_INSTANCE"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/instance/{instanceId}/lock": {
      "post": {
        "summary": "Instance Lock",
        "description": "Set termination protection for specific instance\n",
        "operationId": "awsElastigroupInstanceLock",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "instanceId",
            "example": "i-123456",
            "description": "AWS Instance ID\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "ttlInMinutes",
            "example": "23",
            "description": "Specify a TTL (in minutes) for this lock, meaning, for how long the protection will be valid for.\n",
            "schema": {
              "type": "integer"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Lock Instances Responce",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "ff3e1e5b-91b8-42fa-8267-b988efc7f662",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/instance/i-123456/lock",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2015-06-29T13:01:55.060Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/instance/{instanceId}/unlock": {
      "post": {
        "summary": "Instance Unlock",
        "description": "Remove the termination protection from specific instance\n",
        "operationId": "awsElastigroupInstanceUnlock",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1instance~1%7BinstanceId%7D~1lock/post/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Unlock Instances Responce",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "ff3e1e5b-91b8-42fa-8267-b988efc7f662",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/instance/i-123456/unlock",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2015-06-29T13:01:55.060Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/emr/mrScaler": {
      "get": {
        "summary": "List All Scalers",
        "description": "List all MR Scalers and their configuration.",
        "operationId": "elastigroupAwsEmrListAll",
        "tags": [
          "Elastigroup AWS EMR Scaler"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "allOf": [
                                  {
                                    "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0"
                                  },
                                  {
                                    "type": "object",
                                    "title": "createdAt & updatedAt object",
                                    "properties": {
                                      "createdAt": {
                                        "type": "string",
                                        "format": "date-time",
                                        "example": "2018-10-10T10:50:29.000+0000"
                                      },
                                      "updatedAt": {
                                        "type": "string",
                                        "format": "date-time",
                                        "example": "2018-11-01T10:50:29.000+0000"
                                      }
                                    }
                                  }
                                ]
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:emr:mrScaler"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "summary": "Create Scaler",
        "description": "Create a new EMR cluster.",
        "operationId": "elastigroupAwsEmrCreate",
        "tags": [
          "Elastigroup AWS EMR Scaler"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "MRScaler object Wrapper",
                    "required": [
                      "mrScaler"
                    ],
                    "properties": {
                      "mrScaler": {
                        "required": [
                          "name",
                          "region",
                          "strategy"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "MRScaler name",
                            "example": "my MRScaler"
                          },
                          "description": {
                            "type": "string",
                            "description": "description for the MRScaler",
                            "example": "this is an MRScaler created with Spot"
                          },
                          "region": {
                            "type": "string",
                            "description": "The region of the source cluster",
                            "example": "us-west-2"
                          },
                          "strategy": {
                            "type": "object",
                            "title": "Strategy Object",
                            "description": "The strategy for creating the group. At least one of `wrapping`, `cloning`, or `new` is required.\n",
                            "properties": {
                              "wrapping": {
                                "type": "object",
                                "description": "Required unless either of `strategy.cloning` or `strategy.new` is specified. In wrap mode, MRScaler will manage an existing cluster and will scale up/down cluster task groups only. MRScaler will manage only instance groups that were created by Spot.\n",
                                "properties": {
                                  "sourceClusterId": {
                                    "type": "string",
                                    "example": "c-1234"
                                  }
                                }
                              },
                              "new": {
                                "type": "object",
                                "description": "Required unless `strategy.wrapping` or `strategy.cloning` is specified. In new mode, MRScaler will create a new cluster with the parameters specified in the request.\n",
                                "properties": {
                                  "releaseLabel": {
                                    "type": "string",
                                    "example": "emr-5.17.0"
                                  },
                                  "numberOfRetries": {
                                    "type": "integer",
                                    "example": 5
                                  }
                                }
                              },
                              "cloning": {
                                "type": "object",
                                "description": "Required unless either of `strategy.wrapping` or `strategy.new` is specified. In clone mode, MRScaler will create a new cluster that will be copied from the origin cluster. MRScaler will manage the entire cluster (the origin cluster will not be affected)\n",
                                "properties": {
                                  "originClusterId": {
                                    "type": "string",
                                    "description": "The ID of the cluster to clone",
                                    "example": "j-38EE27G2QY02I"
                                  },
                                  "includeSteps": {
                                    "type": "boolean",
                                    "description": "Include cloning of steps from the original cluster",
                                    "example": false
                                  },
                                  "numberOfRetries": {
                                    "type": "integer",
                                    "description": "number of times to retry if provisioning timeout is exceeded",
                                    "example": 5
                                  }
                                }
                              },
                              "provisioningTimeout": {
                                "type": "object",
                                "description": "EMR clusters occasionally get stuck in provisioning status due to unhealthy clusters, slowness or other issues. In such cases, a timeout can be used to automatically terminate the cluster after the defined period of time.\n",
                                "properties": {
                                  "timeout": {
                                    "type": "integer",
                                    "description": "Time (minutes) after which the cluster is automatically terminated if it's still in provisioning status.\n",
                                    "example": 15
                                  },
                                  "timeoutAction": {
                                    "type": "string",
                                    "enum": [
                                      "terminate",
                                      "terminateAndRetry"
                                    ],
                                    "description": "Desired action if the timeout is exceeded. Currently `terminate` and `terminateAndRetry` are supported.\n",
                                    "example": "terminate"
                                  }
                                }
                              }
                            }
                          },
                          "compute": {
                            "type": "object",
                            "title": "Compute Object",
                            "description": "describes the compute resources for the MR scaler",
                            "properties": {
                              "ebsRootVolumeSize": {
                                "type": "integer",
                                "description": "The EBS root volume size in GB",
                                "example": 4
                              },
                              "availabilityZones": {
                                "type": "array",
                                "description": "Array of availability zone objects",
                                "items": {
                                  "type": "object",
                                  "title": "AZ Object",
                                  "description": "Availability Zone object",
                                  "properties": {
                                    "name": {
                                      "type": "string",
                                      "description": "AZ name - **required in clone or new strategy only**\n",
                                      "example": "us-west-2a"
                                    },
                                    "subnetId": {
                                      "type": "string",
                                      "description": "EC2/VPC subnet ID - **required in clone or new strategy only**\n",
                                      "example": "subnet-3b5b3601"
                                    }
                                  }
                                }
                              },
                              "bootstrapActions": {
                                "type": "object",
                                "title": "BootstrapActions Object",
                                "description": "Describe bootstrap actions. For more information please see: [Advanced - Using Bootstrap And Configuration Files](https://docs.flexera.com/spot/elastigroup/tools-integrations/elastic-mapreduce/advanced-import-use-bootstrap-and-configuration-files)\n",
                                "oneOf": [
                                  {
                                    "type": "object",
                                    "title": "Configurations object",
                                    "required": [
                                      "file"
                                    ],
                                    "properties": {
                                      "file": {
                                        "type": "object",
                                        "description": "Bootstraps file for the group",
                                        "properties": {
                                          "bucket": {
                                            "type": "string",
                                            "description": "The S3 bucket name",
                                            "example": "emr-test"
                                          },
                                          "key": {
                                            "type": "string",
                                            "description": "The S3 Bucket key",
                                            "example": "MyFile.json"
                                          }
                                        }
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "title": "Json Configuration Object",
                                    "required": [
                                      "jsonConfiguration"
                                    ],
                                    "properties": {
                                      "jsonConfiguration": {
                                        "type": "array",
                                        "description": "Bootstraps configuration for the group",
                                        "items": {
                                          "type": "object",
                                          "required": [
                                            "name",
                                            "scriptBootstrapAction"
                                          ],
                                          "properties": {
                                            "name": {
                                              "type": "string",
                                              "description": "The name of bootstrap action"
                                            },
                                            "scriptBootstrapAction": {
                                              "required": [
                                                "path"
                                              ],
                                              "type": "object",
                                              "description": "The script run by the bootstrap action.",
                                              "properties": {
                                                "path": {
                                                  "type": "string",
                                                  "description": "The S3 bucket name",
                                                  "example": "emr-test"
                                                },
                                                "args": {
                                                  "type": "array",
                                                  "description": "A list of command line arguments to pass to the bootstrap action script.",
                                                  "items": {
                                                    "type": "string",
                                                    "example": "instance.isMaster=true"
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                ]
                              },
                              "steps": {
                                "type": "object",
                                "title": "Steps Object",
                                "description": "Describe emr steps. For more information please see: [Advanced - Using Bootstrap And Configuration Files](https://docs.flexera.com/spot/elastigroup/tools-integrations/elastic-mapreduce/advanced-import-use-bootstrap-and-configuration-files)\n",
                                "oneOf": [
                                  {
                                    "type": "object",
                                    "title": "Configurations object",
                                    "required": [
                                      "file"
                                    ],
                                    "properties": {
                                      "file": {
                                        "type": "object",
                                        "description": "Steps file for the group",
                                        "properties": {
                                          "bucket": {
                                            "type": "string",
                                            "description": "The S3 bucket name",
                                            "example": "emr-test"
                                          },
                                          "key": {
                                            "type": "string",
                                            "description": "The S3 Bucket key",
                                            "example": "MyFile.json"
                                          }
                                        }
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "title": "Json Configuration Object",
                                    "required": [
                                      "jsonConfiguration"
                                    ],
                                    "properties": {
                                      "jsonConfiguration": {
                                        "type": "array",
                                        "description": "Steps configuration for the group",
                                        "items": {
                                          "type": "object",
                                          "required": [
                                            "name",
                                            "stepConfig"
                                          ],
                                          "properties": {
                                            "name": {
                                              "type": "string",
                                              "description": "The name of configured step",
                                              "example": "stepName"
                                            },
                                            "actionOnFailure": {
                                              "type": "string",
                                              "description": "Valid values \"TERMINATE_JOB_FLOW\", \"TERMINATE_CLUSTER\", \"CANCEL_AND_WAIT\", \"CONTINUE\"",
                                              "example": "CONTINUE"
                                            },
                                            "stepConfig": {
                                              "required": [
                                                "jar"
                                              ],
                                              "type": "object",
                                              "description": "The JAR file used for the step.",
                                              "properties": {
                                                "args": {
                                                  "type": "array",
                                                  "description": "A list of command line arguments passed to the JAR file's main function when executed.",
                                                  "example": "-input",
                                                  "items": {
                                                    "type": "string"
                                                  }
                                                },
                                                "jar": {
                                                  "type": "string",
                                                  "description": "A path to a JAR file run during the step.",
                                                  "example": "emr-test"
                                                },
                                                "mainClass": {
                                                  "type": "string",
                                                  "description": "The name of the main class in the specified Java file.",
                                                  "example": "mainClass"
                                                },
                                                "properties": {
                                                  "type": "array",
                                                  "description": "A list of Java properties that are set when the step runs.",
                                                  "items": {
                                                    "type": "object",
                                                    "required": [
                                                      "key",
                                                      "value"
                                                    ],
                                                    "properties": {
                                                      "key": {
                                                        "type": "string",
                                                        "description": "The unique identifier of a key-value pair.",
                                                        "example": "key"
                                                      },
                                                      "value": {
                                                        "type": "string",
                                                        "description": "The value part of the identified key.",
                                                        "example": "value"
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                ]
                              },
                              "instanceGroups": {
                                "type": "array",
                                "description": "Array of instance groups for this MR scaler",
                                "items": {
                                  "type": "object",
                                  "title": "InstanceGroup Object",
                                  "properties": {
                                    "masterGroup": {
                                      "type": "object",
                                      "title": "Master Group Object",
                                      "required": [
                                        "lifeCycle"
                                      ],
                                      "properties": {
                                        "instanceTypes": {
                                          "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute/properties/instanceGroups/items/properties/coreGroup/properties/instanceTypes"
                                        },
                                        "target": {
                                          "type": "integer",
                                          "description": "Number of instances in the master group - **required in clone or new strategy only**",
                                          "example": 1
                                        },
                                        "lifeCycle": {
                                          "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute/properties/instanceGroups/items/properties/coreGroup/properties/lifeCycle",
                                          "example": "ON_DEMAND"
                                        },
                                        "configurations": {
                                          "oneOf": [
                                            {
                                              "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute/properties/configurations/oneOf/0"
                                            },
                                            {
                                              "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute/properties/configurations/oneOf/1"
                                            }
                                          ]
                                        }
                                      }
                                    },
                                    "coreGroup": {
                                      "type": "object",
                                      "title": "Core Group Object",
                                      "properties": {
                                        "instanceTypes": {
                                          "type": "array",
                                          "title": "Instance Types Array",
                                          "description": "Instance types to choose from for the group - **required in clone or new strategy only**",
                                          "items": {
                                            "type": "string"
                                          },
                                          "example": [
                                            "m3.xlarge",
                                            "m4.large",
                                            "m4.xlarge",
                                            "m4.2xlarge"
                                          ]
                                        },
                                        "capacity": {
                                          "type": "object",
                                          "title": "Capacity Object",
                                          "description": "Capacity specifications for the group: minimum, maximum, and target compute resources\n",
                                          "properties": {
                                            "minimum": {
                                              "type": "integer",
                                              "description": "Minimum number of instances in group",
                                              "example": 1
                                            },
                                            "target": {
                                              "type": "integer",
                                              "description": "Desired number of instances in group",
                                              "example": 5
                                            },
                                            "maximum": {
                                              "type": "integer",
                                              "description": "Maximum number of instances in group",
                                              "example": 10
                                            },
                                            "unit": {
                                              "type": "string",
                                              "description": "Unit of \"instance\" for the number of instances or unit of \"weight\" for the number of vCPU",
                                              "example": "instance"
                                            }
                                          }
                                        },
                                        "lifeCycle": {
                                          "example": "SPOT",
                                          "description": "**required** only with `clone` or `new` strategy\n",
                                          "type": "string",
                                          "title": "LifeCycle Enum",
                                          "enum": [
                                            "SPOT",
                                            "ON_DEMAND"
                                          ]
                                        },
                                        "ebsConfiguration": {
                                          "type": "object",
                                          "title": "EBS Configuration Object",
                                          "description": "Information about the EBS configurations that will be attached to each EC2 instance in the group.\n",
                                          "required": [
                                            "ebsBlockDeviceConfigs",
                                            "ebsOptimized"
                                          ],
                                          "properties": {
                                            "ebsBlockDeviceConfigs": {
                                              "type": "array",
                                              "description": "An array of Amazon EBS volume specifications attached to a cluster instance.",
                                              "items": {
                                                "type": "object",
                                                "title": "Block Device Config Object",
                                                "description": "Amazon EBS volume specification attached to a cluster instance.",
                                                "required": [
                                                  "volumeSpecification",
                                                  "volumesPerInstance"
                                                ],
                                                "properties": {
                                                  "volumeSpecification": {
                                                    "type": "object",
                                                    "title": "Volume Specification Object",
                                                    "description": "EBS volume specifications such as volume type, IOPS, and size (GiB) that will be requested for the EBS volume attached to an EC2 instance in the cluster - required if `ebsConfiguration` is defined.\n",
                                                    "properties": {
                                                      "volumeType": {
                                                        "type": "string",
                                                        "description": "The volume type. Volume types supported are `gp2`, `io1`, and `standard` - required if `ebsConfiguration` is defined\n",
                                                        "enum": [
                                                          "gp2",
                                                          "io1",
                                                          "standard"
                                                        ],
                                                        "example": "io1"
                                                      },
                                                      "dynamicVolumeSize": {
                                                        "type": "object",
                                                        "title": "Dynamic Volume Size Object",
                                                        "required": [
                                                          "baseSize",
                                                          "resource",
                                                          "sizePerResourceUnit"
                                                        ],
                                                        "description": "Set dynamic volume size properties. **When using this object, you cannot use sizeInGB**. You must use one or the other.\n",
                                                        "properties": {
                                                          "baseSize": {
                                                            "type": "integer",
                                                            "description": "Initial size for volume.",
                                                            "example": 50
                                                          },
                                                          "resource": {
                                                            "type": "string",
                                                            "description": "Valid values: \"CPU\"\n",
                                                            "enum": [
                                                              "CPU"
                                                            ],
                                                            "example": "CPU"
                                                          },
                                                          "sizePerResourceUnit": {
                                                            "type": "integer",
                                                            "description": "Additional size per resource unit (in GB). Example: if baseSize=50, and sizePerResourceUnit=20, and an instance with 2 CPU is launched - its disk size will be of size 90GB\n",
                                                            "example": 20
                                                          }
                                                        }
                                                      },
                                                      "sizeInGB": {
                                                        "type": "integer",
                                                        "description": "The volume size, in gigabytes (GiB). This can be a number from 1 - 1024. **If the volume type is EBS-optimized, the minimum value is 10** - required if `ebsConfiguration` is defined\n",
                                                        "example": 8
                                                      },
                                                      "iops": {
                                                        "type": "integer",
                                                        "description": "The number of I/O operations per second (IOPS) that the volume supports.",
                                                        "example": 200
                                                      }
                                                    }
                                                  },
                                                  "volumesPerInstance": {
                                                    "type": "integer",
                                                    "description": "Number of EBS volumes with a specific volume configuration that will be associated with every instance in the instance group - required if `ebsConfiguration` is defined.\n",
                                                    "example": 1
                                                  }
                                                }
                                              }
                                            },
                                            "ebsOptimized": {
                                              "type": "boolean",
                                              "description": "Indicates whether an Amazon EBS volume is EBS-optimized.",
                                              "example": true
                                            }
                                          }
                                        },
                                        "configurations": {
                                          "oneOf": [
                                            {
                                              "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute/properties/configurations/oneOf/0"
                                            },
                                            {
                                              "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute/properties/configurations/oneOf/1"
                                            }
                                          ]
                                        }
                                      }
                                    },
                                    "taskGroup": {
                                      "type": "object",
                                      "title": "Task Group Object",
                                      "properties": {
                                        "instanceTypes": {
                                          "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute/properties/instanceGroups/items/properties/coreGroup/properties/instanceTypes"
                                        },
                                        "capacity": {
                                          "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute/properties/instanceGroups/items/properties/coreGroup/properties/capacity"
                                        },
                                        "lifeCycle": {
                                          "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute/properties/instanceGroups/items/properties/coreGroup/properties/lifeCycle",
                                          "example": "SPOT",
                                          "description": "**required** only with `clone` or `new` strategy\n"
                                        },
                                        "ebsConfiguration": {
                                          "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute/properties/instanceGroups/items/properties/coreGroup/properties/ebsConfiguration"
                                        },
                                        "configurations": {
                                          "oneOf": [
                                            {
                                              "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute/properties/configurations/oneOf/0"
                                            },
                                            {
                                              "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute/properties/configurations/oneOf/1"
                                            }
                                          ]
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "instanceWeights": {
                                "type": "array",
                                "description": "An array of custom-weight settings",
                                "items": {
                                  "type": "object",
                                  "title": "Instance Weight Object",
                                  "description": "Settings for a single custom weight",
                                  "required": [
                                    "instanceType",
                                    "weightedCapacity"
                                  ],
                                  "properties": {
                                    "instanceType": {
                                      "type": "string",
                                      "description": "The instance type to set weight for\n",
                                      "example": "m4.large"
                                    },
                                    "weightedCapacity": {
                                      "type": "integer",
                                      "description": "Weight for the chosen instance type.\n",
                                      "example": 3
                                    }
                                  }
                                }
                              },
                              "emrManagedMasterSecurityGroup": {
                                "type": "string",
                                "description": "EMR Managed Security group that will be set to the master instance group",
                                "example": "sg-123456789"
                              },
                              "emrManagedSlaveSecurityGroup": {
                                "type": "string",
                                "description": "EMR Managed Security group that will be set to the slave instance group",
                                "example": "sg-123456789"
                              },
                              "additionalMasterSecurityGroups": {
                                "type": "array",
                                "description": "A list of additional Amazon EC2 security group IDs for the master node.",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "sg-123456789"
                                ]
                              },
                              "additionalSlaveSecurityGroups": {
                                "type": "array",
                                "description": "A list of additional Amazon EC2 security group IDs for the core and task nodes.",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "sg-123456789"
                                ]
                              },
                              "serviceAccessSecurityGroup": {
                                "type": "string",
                                "description": "The identifier of the Amazon EC2 security group for the Amazon EMR service to access clusters in VPC private subnets\n",
                                "example": "EMR_DefaultRole"
                              },
                              "customAmiId": {
                                "type": "string",
                                "description": "The ID of a custom Amazon EBS-backed Linux AMI if the cluster uses a custom AMI.",
                                "example": "ami-123456789"
                              },
                              "repoUpgradeOnBoot": {
                                "type": "string",
                                "description": "**Applies only when CustomAmiID is used**. Specifies the type of updates that are applied from the Amazon Linux AMI package repositories when an instance boots using the AMI.\n",
                                "enum": [
                                  "SECURITY",
                                  "NONE"
                                ],
                                "example": "SECURITY"
                              },
                              "tags": {
                                "type": "array",
                                "description": "array of key:value pairs of tags\n",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "tagKey": {
                                      "type": "string",
                                      "description": "The tag's key",
                                      "example": "Creator"
                                    },
                                    "tagValue": {
                                      "type": "string",
                                      "description": "The tag's value",
                                      "example": "someUser"
                                    }
                                  }
                                }
                              },
                              "ec2KeyName": {
                                "type": "string",
                                "description": "The name of an Amazon EC2 key-pair that can be used to `SSH` to the master node.\n",
                                "example": "myEC2KeyName"
                              },
                              "applications": {
                                "type": "array",
                                "description": "A case-insensitive array of applications for Amazon EMR to install and configure when launching the cluster.\n",
                                "items": {
                                  "type": "object",
                                  "title": "Application Object",
                                  "description": "Application for Amazon EMR to install and configure when launching the cluster",
                                  "properties": {
                                    "name": {
                                      "type": "string",
                                      "description": "Application name",
                                      "example": "Hue"
                                    },
                                    "args": {
                                      "type": "array",
                                      "description": "Application arguments",
                                      "items": {
                                        "type": "string"
                                      }
                                    },
                                    "version": {
                                      "type": "string",
                                      "description": "Application version",
                                      "example": "1.0"
                                    }
                                  }
                                }
                              },
                              "configurations": {
                                "oneOf": [
                                  {
                                    "type": "array",
                                    "title": "Json Configuration Object",
                                    "required": [
                                      "jsonConfiguration"
                                    ],
                                    "description": "EMR cluster configuration in JSON format. You can use `jsonConfiguration` or `file`, but not both. Can be used in `masterGroup`, `coreGroup`, and `taskGroup`.\n",
                                    "items": {
                                      "title": "jsonConfiguration",
                                      "type": "object",
                                      "properties": {
                                        "classification": {
                                          "type": "string",
                                          "description": "The grouping within a configuration.",
                                          "example": "mapred-site"
                                        },
                                        "properties": {
                                          "type": "object",
                                          "description": "Within a configuration classification, a set of properties that represent the settings that you want to change in the configuration file. Duplicates not allowed.\n",
                                          "example": {
                                            "mapred.tasktracker.map.tasks.maximum": 2
                                          }
                                        },
                                        "configurations": {
                                          "type": "array",
                                          "description": "Array of objects with any keys. This can include additional levels (i.e., nested) of classification, properties, and configurations.\n",
                                          "items": {
                                            "type": "object",
                                            "title": "Nested Configuration Object",
                                            "properties": {
                                              "classification": {
                                                "type": "string",
                                                "description": "The grouping within a configuration.",
                                                "example": "hadoop-env"
                                              },
                                              "properties": {
                                                "type": "object",
                                                "description": "Within a configuration classification, a set of properties that represent the settings that you want to change in the configuration file. Duplicates not allowed.\n",
                                                "example": {
                                                  "HADOOP_DATANODE_HEAPSIZE": 2048,
                                                  "HADOOP_NAMENODE_OPTS": "-XX:GCTimeRatio=19"
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "title": "Configurations object",
                                    "required": [
                                      "file"
                                    ],
                                    "properties": {
                                      "file": {
                                        "type": "object",
                                        "description": "Configurations file for the group",
                                        "properties": {
                                          "bucket": {
                                            "type": "string",
                                            "description": "S3 bucket name of the configurations file for the instance group",
                                            "example": "spot-labs"
                                          },
                                          "key": {
                                            "type": "string",
                                            "description": "S3 key name of the configurations file for the instance group",
                                            "example": "emr_configurations.json"
                                          }
                                        }
                                      }
                                    }
                                  }
                                ]
                              }
                            }
                          },
                          "cluster": {
                            "type": "object",
                            "title": "EMR Cluster Object",
                            "description": "**Allowed only when the `new` strategy is chosen.**\n",
                            "properties": {
                              "terminationProtected": {
                                "type": "boolean",
                                "description": "Specifies whether the Amazon EC2 instances in the cluster are protected from termination by API calls, user intervention, or in the event of a job-flow error\n",
                                "example": false
                              },
                              "keepJobFlowAliveWhenNoSteps": {
                                "type": "boolean",
                                "description": "Specifies whether the cluster should remain available after completing all steps",
                                "example": true
                              },
                              "logUri": {
                                "type": "string",
                                "description": "The path to the Amazon S3 location where logs for this cluster are stored.",
                                "example": "s3://job-status"
                              },
                              "additionalInfo": {
                                "type": "string",
                                "description": "This is meta information about third-party applications that third-party vendors use for testing purposes.\n",
                                "example": "{'test':'more information'}"
                              },
                              "jobFlowRole": {
                                "type": "string",
                                "description": "The IAM role that was specified when the job flow was launched. The EC2 instances of the job flow assume this role.\n",
                                "example": "EMR_EC2_DefaultRole"
                              },
                              "serviceRole": {
                                "type": "string",
                                "description": "The IAM role that will be assumed by the Amazon EMR service to access AWS resources on your behalf\n",
                                "example": "someIAMRole"
                              },
                              "securityConfiguration": {
                                "type": "string",
                                "description": "The name of the security configuration applied to the cluster",
                                "example": "testConfig"
                              }
                            }
                          },
                          "scheduling": {
                            "type": "object",
                            "title": "Scheduling Object",
                            "description": "Schedule tasks to execute on the Elastigroup.",
                            "properties": {
                              "tasks": {
                                "type": "array",
                                "description": "An array of scheduled tasks.",
                                "items": {
                                  "type": "object",
                                  "title": "Task Object",
                                  "description": "A scheduled task",
                                  "properties": {
                                    "isEnabled": {
                                      "type": "boolean",
                                      "description": "Enable/Disable the specified scheduling task.",
                                      "example": true,
                                      "default": true
                                    },
                                    "instanceGroupType": {
                                      "type": "string",
                                      "description": "Select the EMR instance groups to execute the scheduled task on. Valid values: `task`\n",
                                      "example": "task",
                                      "enum": [
                                        "task"
                                      ]
                                    },
                                    "taskType": {
                                      "type": "string",
                                      "description": "The type of task to be scheduled. Valid values: `setCapacity`\n",
                                      "example": "setCapacity",
                                      "enum": [
                                        "setCapacity"
                                      ]
                                    },
                                    "cronExpression": {
                                      "type": "string",
                                      "description": "A valid Cron expression",
                                      "example": "* 8 * 10 *"
                                    },
                                    "targetCapacity": {
                                      "type": "integer",
                                      "description": "Set a new target capacity for the Elastigroup.",
                                      "example": 2
                                    },
                                    "minCapacity": {
                                      "type": "integer",
                                      "description": "Set a new minimum capacity for the Elastigroup.",
                                      "example": 2
                                    },
                                    "maxCapacity": {
                                      "type": "integer",
                                      "description": "Set a new maximum capacity for the Elastigroup.",
                                      "example": 2
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "scaling": {
                            "type": "object",
                            "title": "Scaling Object",
                            "description": "Set scaling polices.",
                            "properties": {
                              "up": {
                                "type": "array",
                                "title": "Scaling Up Object",
                                "description": "A scale-up policy",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "policyName": {
                                      "type": "string",
                                      "description": "The Scaling policy name",
                                      "example": "myScaleUpPolicyName"
                                    },
                                    "metricName": {
                                      "type": "string",
                                      "description": "The name of the metric",
                                      "default": "AppsPending",
                                      "example": "AppsPending"
                                    },
                                    "unit": {
                                      "type": "string",
                                      "description": "The unit for the alarm's associated metric.",
                                      "example": "count",
                                      "enum": [
                                        "seconds",
                                        "microseconds",
                                        "milliseconds",
                                        "bytes",
                                        "kilobytes",
                                        "megabytes",
                                        "gigabytes",
                                        "terabytes",
                                        "bits",
                                        "kilobits",
                                        "megabits",
                                        "gigabits",
                                        "terabits",
                                        "percent",
                                        "count",
                                        "bytes/second",
                                        "kilobytes/second",
                                        "megabytes/second",
                                        "gigabytes/second",
                                        "terabytes/second",
                                        "bits/second",
                                        "kilobits/second",
                                        "megabits/second",
                                        "gigabits/second",
                                        "terabits/second",
                                        "count/second",
                                        "none"
                                      ]
                                    },
                                    "threshold": {
                                      "type": "integer",
                                      "description": "The value against which the specified statistic is compared.",
                                      "example": 100
                                    },
                                    "action": {
                                      "type": "object",
                                      "title": "Scaling up Action Object",
                                      "description": "The action to take when scale up is needed.",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "description": "The type of the action to take when scale up is needed. Valid Values: `adjustment` | `updateCapacity` | `setMinTarget`\n",
                                          "enum": [
                                            "adjustment",
                                            "updateCapacity",
                                            "setMinTarget"
                                          ],
                                          "example": "adjustment"
                                        },
                                        "minTargetCapacity": {
                                          "type": "integer",
                                          "description": "Required if using `setMinTarget` as action type. A number specifying the target capacity needed.\n",
                                          "example": 1
                                        },
                                        "adjustment": {
                                          "type": "integer",
                                          "description": "Required if using `adjustment` as action type. The number associated with the specified adjustment type.\n",
                                          "example": 2
                                        },
                                        "target": {
                                          "type": "integer",
                                          "description": "Required if using `updateCapacity` as action type and neither `minimum` nor `maximum` are defined. The desired number of instances.\n",
                                          "example": 2
                                        },
                                        "minimum": {
                                          "type": "integer",
                                          "description": "Required if using `updateCapacity` as action type and neither `target` nor `maximum` are defined. The lower limit number of instances that you can scale down to.\n",
                                          "example": 1
                                        },
                                        "maximum": {
                                          "type": "integer",
                                          "description": "Required if using `updateCapacity` as action type and neither `target` nor `minimum` defined. The upper limit number of instances that you can scale up to.\n",
                                          "example": 5
                                        }
                                      }
                                    },
                                    "adjustment": {
                                      "type": "integer",
                                      "description": "**Cannot be used if using `action` or `minTargetCapacity`**. The number associated with the specified adjustment type.\n",
                                      "example": 2
                                    },
                                    "period": {
                                      "type": "integer",
                                      "description": "The period in seconds over which the statistic is applied.",
                                      "example": 300
                                    },
                                    "evaluationPeriods": {
                                      "type": "integer",
                                      "description": "The number of periods over which data is compared to the specified threshold",
                                      "example": 1
                                    },
                                    "dimensions": {
                                      "type": "array",
                                      "description": "The dimensions for the alarm's associated metric.",
                                      "items": {
                                        "type": "object",
                                        "description": "The dimension for the alarm's associated metric.",
                                        "properties": {
                                          "name": {
                                            "type": "string",
                                            "description": "the dimension name",
                                            "example": "JobFlowId"
                                          }
                                        }
                                      }
                                    },
                                    "operator": {
                                      "type": "string",
                                      "description": "The operator to use in order to determine if the scaling policy is applicable. Valid values: `gt` | `gte` | `lt` | `lte`\n",
                                      "enum": [
                                        "gte",
                                        "lte",
                                        "lt",
                                        "gt"
                                      ],
                                      "example": "gte"
                                    },
                                    "statistic": {
                                      "type": "string",
                                      "description": "The metric statistics to return.  Valid Values: `average`, `sum`, `sampleCount`, `maximum`, `minimum`\n",
                                      "enum": [
                                        "average",
                                        "sum",
                                        "sampleCount",
                                        "maximum",
                                        "minimum"
                                      ]
                                    },
                                    "namespace": {
                                      "type": "string",
                                      "description": "The namespace for the alarm's associated metric.",
                                      "default": "AWS/ElasticMapReduce",
                                      "example": "AWS/ElasticMapReduce"
                                    }
                                  }
                                }
                              },
                              "down": {
                                "type": "array",
                                "title": "Scaling Down Object",
                                "description": "A scale-down policy",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "policyName": {
                                      "type": "string",
                                      "description": "The Scaling policy name",
                                      "example": "myScaleDownPolicyName"
                                    },
                                    "metricName": {
                                      "type": "string",
                                      "description": "The name of the metric",
                                      "default": "AppsPending",
                                      "example": "AppsPending"
                                    },
                                    "unit": {
                                      "type": "string",
                                      "description": "The unit for the alarm's associated metric.",
                                      "example": "count",
                                      "enum": [
                                        "seconds",
                                        "microseconds",
                                        "milliseconds",
                                        "bytes",
                                        "kilobytes",
                                        "megabytes",
                                        "gigabytes",
                                        "terabytes",
                                        "bits",
                                        "kilobits",
                                        "megabits",
                                        "gigabits",
                                        "terabits",
                                        "percent",
                                        "count",
                                        "bytes/second",
                                        "kilobytes/second",
                                        "megabytes/second",
                                        "gigabytes/second",
                                        "terabytes/second",
                                        "bits/second",
                                        "kilobits/second",
                                        "megabits/second",
                                        "gigabits/second",
                                        "terabits/second",
                                        "count/second",
                                        "none"
                                      ]
                                    },
                                    "threshold": {
                                      "type": "integer",
                                      "description": "The value against which the specified statistic is compared.",
                                      "example": 100
                                    },
                                    "action": {
                                      "type": "object",
                                      "title": "Scaling Down Action Object",
                                      "description": "The action to take when scale down is needed.",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "description": "The type of the action to take when scale down is needed. Valid Values: `adjustment` | `updateCapacity` | `setMaxTarget`\n",
                                          "enum": [
                                            "adjustment",
                                            "updateCapacity",
                                            "setMaxTarget"
                                          ],
                                          "example": "adjustment"
                                        },
                                        "maxTargetCapacity": {
                                          "type": "integer",
                                          "description": "Required if using `setMaxTarget` as action type. A number specifying the target capacity needed.\n",
                                          "example": 1
                                        },
                                        "adjustment": {
                                          "type": "integer",
                                          "description": "Required if using `adjustment` as action type. The number associated with the specified adjustment type.\n",
                                          "example": 2
                                        },
                                        "target": {
                                          "type": "integer",
                                          "description": "Required if using `updateCapacity` as action type and neither `minimum` nor `maximum` are defined. The desired number of instances.\n",
                                          "example": 2
                                        },
                                        "minimum": {
                                          "type": "integer",
                                          "description": "Required if using `updateCapacity` as action type and neither `target` nor `maximum` are defined. The lower limit number of instances that you can scale down to.\n",
                                          "example": 1
                                        },
                                        "maximum": {
                                          "type": "integer",
                                          "description": "Required if using `updateCapacity` as action type and neither `target` nor `minimum` defined. The upper limit number of instances that you can scale up to.\n",
                                          "example": 5
                                        }
                                      }
                                    },
                                    "adjustment": {
                                      "type": "integer",
                                      "description": "**Cannot be used if using `action` or `maxTargetCapacity`**. The number associated with the specified adjustment type.\n",
                                      "example": 2
                                    },
                                    "period": {
                                      "type": "integer",
                                      "description": "The period in seconds over which the statistic is applied.",
                                      "example": 300
                                    },
                                    "evaluationPeriods": {
                                      "type": "integer",
                                      "description": "The number of periods over which data is compared to the specified threshold",
                                      "example": 1
                                    },
                                    "dimensions": {
                                      "type": "array",
                                      "description": "The dimensions for the alarm's associated metric.",
                                      "items": {
                                        "type": "object",
                                        "description": "The dimension for the alarm's associated metric.",
                                        "properties": {
                                          "name": {
                                            "type": "string",
                                            "description": "the dimension name",
                                            "example": "JobFlowId"
                                          }
                                        }
                                      }
                                    },
                                    "operator": {
                                      "type": "string",
                                      "description": "The operator to use in order to determine if the scaling policy is applicable. Valid values: `gt` | `gte` | `lt` | `lte`\n",
                                      "enum": [
                                        "gte",
                                        "lte",
                                        "lt",
                                        "gt"
                                      ],
                                      "example": "lte"
                                    },
                                    "statistic": {
                                      "type": "string",
                                      "description": "The metric statistics to return.  Valid Values: `average`, `sum`, `sampleCount`, `maximum`, `minimum`\n",
                                      "enum": [
                                        "average",
                                        "sum",
                                        "sampleCount",
                                        "maximum",
                                        "minimum"
                                      ]
                                    },
                                    "namespace": {
                                      "type": "string",
                                      "description": "The namespace for the alarm's associated metric.",
                                      "default": "AWS/ElasticMapReduce",
                                      "example": "AWS/ElasticMapReduce"
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "terminationPolicies": {
                            "type": "array",
                            "description": "Termination policies for EMR clusters based on CloudWatch Metrics.\n",
                            "items": {
                              "type": "object",
                              "title": "Termination Policy Object",
                              "description": "A termination policy for EMR clusters based on CloudWatch Metrics.",
                              "properties": {
                                "statements": {
                                  "type": "array",
                                  "description": "Array of termination statements to execute",
                                  "items": {
                                    "type": "object",
                                    "title": "Termination Statement Object",
                                    "description": "A termination statement to execute",
                                    "required": [
                                      "namespace",
                                      "metricName",
                                      "threshold"
                                    ],
                                    "properties": {
                                      "namespace": {
                                        "type": "string",
                                        "description": "**Must be `AWS/ElasticMapReduce`\"\n",
                                        "example": "AWS/ElasticMapReduce"
                                      },
                                      "metricName": {
                                        "type": "string",
                                        "description": "The name of the metric in CloudWatch which the statement will be based on.",
                                        "example": "AppsRunning"
                                      },
                                      "statistic": {
                                        "type": "string",
                                        "description": "The aggregation method of the given metric",
                                        "enum": [
                                          "average",
                                          "sum",
                                          "sampleCount",
                                          "maximum",
                                          "minimum"
                                        ],
                                        "default": "sum"
                                      },
                                      "unit": {
                                        "type": "string",
                                        "description": "The unit for a given metric.",
                                        "example": "count",
                                        "enum": [
                                          "seconds",
                                          "microseconds",
                                          "milliseconds",
                                          "bytes",
                                          "kilobytes",
                                          "megabytes",
                                          "gigabytes",
                                          "terabytes",
                                          "bits",
                                          "kilobits",
                                          "megabits",
                                          "gigabits",
                                          "terabits",
                                          "percent",
                                          "count",
                                          "bytes/second",
                                          "kilobytes/second",
                                          "megabytes/second",
                                          "gigabytes/second",
                                          "terabytes/second",
                                          "bits/second",
                                          "kilobits/second",
                                          "megabits/second",
                                          "gigabits/second",
                                          "terabits/second",
                                          "count/second",
                                          "none"
                                        ],
                                        "default": "count"
                                      },
                                      "threshold": {
                                        "type": "number",
                                        "format": "double",
                                        "description": "The value that the specified statistic is compared to.",
                                        "example": 2
                                      },
                                      "period": {
                                        "type": "integer",
                                        "description": "The period in seconds over which the statistic is applied.",
                                        "example": 300
                                      },
                                      "evaluationPeriods": {
                                        "type": "integer",
                                        "description": "The number of periods over which data is compared to the specified threshold",
                                        "example": 1
                                      },
                                      "operator": {
                                        "type": "string",
                                        "description": "The operator to use in order to determine if the scaling policy is applicable. Valid values: `gt` | `gte` | `lt` | `lte`\n",
                                        "enum": [
                                          "gte",
                                          "lte",
                                          "lt",
                                          "gt"
                                        ],
                                        "example": "gte",
                                        "default": "gte"
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0"
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:emr:mrScaler"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/emr/mrScalerOperator": {
      "post": {
        "summary": "Create Scaler Operator",
        "description": "mrScaler – required will have the same configuration as in createMrScaler with one exception:\nwe will only work with strategy of “new”, no “clone”/”warp” will be allowed.\n",
        "operationId": "elastigroupAwsEmrOperatorCreate",
        "tags": [
          "Elastigroup AWS EMR Scaler"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "MRScaler object Wrapper",
                    "required": [
                      "mrScaler"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "example": "GuyEmrOperatorTest"
                      },
                      "mrScaler": {
                        "required": [
                          "name",
                          "region",
                          "strategy"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "MRScaler name",
                            "example": "my MRScaler"
                          },
                          "description": {
                            "type": "string",
                            "description": "description for the MRScaler",
                            "example": "this is an MRScaler created with Spot"
                          },
                          "region": {
                            "type": "string",
                            "description": "The region of the source cluster",
                            "example": "us-west-2"
                          },
                          "strategy": {
                            "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/strategy"
                          },
                          "compute": {
                            "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/compute"
                          },
                          "cluster": {
                            "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/cluster"
                          },
                          "scheduling": {
                            "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/scheduling"
                          },
                          "scaling": {
                            "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/scaling"
                          },
                          "terminationPolicies": {
                            "type": "array",
                            "description": "Termination policies for EMR clusters based on CloudWatch Metrics.\n",
                            "items": {
                              "$ref": "#/paths/~1aws~1emr~1mrScaler/post/requestBody/content/application~1json/schema/allOf/0/properties/mrScaler/properties/terminationPolicies/items"
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1aws~1emr~1mrScaler/post/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/emr/mrScaler/{mrScalerId}": {
      "get": {
        "summary": "Get Scaler",
        "description": "Get a description of a specific MR Scaler and its configuration.",
        "operationId": "elastigroupAwsEmrListScaler",
        "tags": [
          "Elastigroup AWS EMR Scaler"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "mrScalerId",
            "required": true,
            "description": "The MRScaler ID\n",
            "schema": {
              "type": "string"
            },
            "example": "simrs-12223"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1aws~1emr~1mrScaler/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Scaler",
        "description": "Update an MR Scaler. Partial updating is supported.",
        "operationId": "elastigroupAwsEmrUpdateScaler",
        "tags": [
          "Elastigroup AWS EMR Scaler"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1emr~1mrScaler~1%7BmrScalerId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "description": "An EMR Scaler Object",
                    "properties": {
                      "mrScaler": {
                        "type": "object",
                        "description": "MR Scaler Object - Update Task Capacity",
                        "properties": {
                          "compute": {
                            "type": "object",
                            "properties": {
                              "instanceGroups": {
                                "type": "object",
                                "properties": {
                                  "taskGroup": {
                                    "type": "object",
                                    "properties": {
                                      "capacity": {
                                        "type": "object",
                                        "properties": {
                                          "maximum": {
                                            "type": "integer",
                                            "example": 0
                                          },
                                          "target": {
                                            "type": "integer",
                                            "example": 0
                                          },
                                          "minimum": {
                                            "type": "integer",
                                            "example": 0
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  {
                    "type": "object",
                    "description": "An EMR Scaler Object",
                    "properties": {
                      "mrScaler": {
                        "type": "object",
                        "description": "MR Scaler Object - Update Dynamic Volume Size in EBS Configuration",
                        "properties": {
                          "compute": {
                            "type": "object",
                            "properties": {
                              "instanceGroups": {
                                "type": "object",
                                "properties": {
                                  "taskGroup": {
                                    "type": "object",
                                    "properties": {
                                      "ebsConfiguration": {
                                        "type": "object",
                                        "properties": {
                                          "ebsBlockDeviceConfigs": {
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "volumeSpecification": {
                                                  "type": "object",
                                                  "properties": {
                                                    "dynamicVolumeSize": {
                                                      "type": "object",
                                                      "properties": {
                                                        "baseSize": {
                                                          "type": "integer",
                                                          "example": 30
                                                        },
                                                        "resource": {
                                                          "type": "string",
                                                          "example": "CPU"
                                                        },
                                                        "sizePerResourceUnit": {
                                                          "type": "integer",
                                                          "example": 15
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1aws~1emr~1mrScaler/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Scaler",
        "description": "Delete an MR Scaler",
        "operationId": "elastigroupAwsEmrDeleteMrsScaler",
        "tags": [
          "Elastigroup AWS EMR Scaler"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1emr~1mrScaler~1%7BmrScalerId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/emr/mrScaler/{mrScalerId}/instance": {
      "get": {
        "summary": "List Instances",
        "description": "Get a list of all instances and instances groups in the cluster",
        "operationId": "elastigroupAwsEmrListInstances",
        "tags": [
          "Elastigroup AWS EMR Scaler"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1emr~1mrScaler~1%7BmrScalerId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "EMR Scaler Instance Object",
                                "description": "An instance in the cluster",
                                "properties": {
                                  "instanceId": {
                                    "type": "string",
                                    "description": "The instance ID",
                                    "example": "i-asdfjk3989"
                                  },
                                  "instanceGroupId": {
                                    "type": "string",
                                    "example": "ig-asdfjl2",
                                    "description": "The instance group ID"
                                  },
                                  "instanceGroupRole": {
                                    "type": "string",
                                    "example": "MASTER",
                                    "description": "The instance group role"
                                  },
                                  "instanceType": {
                                    "type": "string",
                                    "example": "m1.medium",
                                    "description": "The instance type"
                                  },
                                  "availabilityZone": {
                                    "type": "string",
                                    "example": "us-east-1a",
                                    "description": "The availability zone for the instance"
                                  },
                                  "status": {
                                    "type": "string",
                                    "example": "Running",
                                    "description": "The instance status"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "format": "date-time",
                                    "example": "2015-08-02T09:11:16.356Z",
                                    "description": "The last date-time this item was updated"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:emr:mrScaler:instance"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/emr/mrScaler/{mrScalerId}/scale/up": {
      "put": {
        "summary": "Scale Up",
        "description": "Scale up MR Scaler instances",
        "operationId": "elastigroupAwsEmrScaleUp",
        "tags": [
          "Elastigroup AWS EMR Scaler"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1emr~1mrScaler~1%7BmrScalerId%7D/get/parameters/1"
          },
          {
            "in": "query",
            "name": "adjustment",
            "schema": {
              "type": "integer",
              "example": 3
            },
            "description": "Number of instances to add to the MR Scaler",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "An EMR Scale Up Object",
                                "description": "An EMR Scale Up Object",
                                "properties": {
                                  "modifiedInstanceGroups": {
                                    "type": "array",
                                    "description": "The groups modified by this change",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "ig-2470IUVXLJ652S",
                                      "ig-9870IUVXMYYW9"
                                    ]
                                  },
                                  "newInstanceGroups": {
                                    "type": "array",
                                    "description": "Newly launched instances due to this change",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "ig-0570LPWAZXBSR3"
                                    ]
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:emr:mrScaler:scale"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/emr/mrScaler/{mrScalerId}/scale/down": {
      "put": {
        "summary": "Scale Down",
        "description": "Scale down MR Scaler instances",
        "operationId": "elastigroupAwsEmrScaleDown",
        "tags": [
          "Elastigroup AWS EMR Scaler"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1emr~1mrScaler~1%7BmrScalerId%7D/get/parameters/1"
          },
          {
            "in": "query",
            "name": "adjustment",
            "description": "Number of instances to remove from the MR Scaler",
            "schema": {
              "type": "integer",
              "example": 3
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "An EMR Scale Down Object",
                                "description": "An EMR Scale Down Object",
                                "properties": {
                                  "modifiedInstanceGroups": {
                                    "type": "array",
                                    "description": "The groups modified by this change",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "ig-2470IUVXLJ652S",
                                      "ig-9870IUVXMYYW9"
                                    ]
                                  },
                                  "victimInstances": {
                                    "type": "array",
                                    "description": "Terminated instances due to this change",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "ig-0570LPWAZXBSR3"
                                    ]
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:emr:mrScaler:scale"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/emr/mrScaler/{mrScalerId}/cluster": {
      "get": {
        "summary": "List Scalers",
        "description": "Get MR Scaler cluster",
        "operationId": "elastigroupAwsEmrListMrScalerClusters",
        "tags": [
          "Elastigroup AWS EMR Scaler"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1emr~1mrScaler~1%7BmrScalerId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "MR Scaler Cluster Object",
                                "description": "An MR Scaler cluster",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "The cluster's ID",
                                    "example": "j-3N7WPI3R0D1R7"
                                  },
                                  "availabilityZone": {
                                    "type": "string",
                                    "description": "The cluster's AZ",
                                    "example": "us-east-1a"
                                  },
                                  "state": {
                                    "type": "string",
                                    "description": "The cluster's state",
                                    "example": "terminated"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "The date-time this cluster was created",
                                    "example": "2015-08-02T09:11:16.356Z"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "The date-time this cluster was last updated",
                                    "example": "2015-08-02T10:11:16.356Z"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:emr:mrScaler:cluster"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/emr/mrScaler/{mrScalerId}/costs": {
      "get": {
        "summary": "Get Scaler Costs",
        "description": "Get financial information on the MR Scaler, including running time, costs, and savings",
        "operationId": "elastigroupAwsEmrListMrScalerCosts",
        "tags": [
          "Elastigroup AWS EMR Scaler"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/2"
          },
          {
            "$ref": "#/paths/~1aws~1emr~1mrScaler~1%7BmrScalerId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "MR Scaler Costs Object",
                                "description": "MR Scaler Costs Object",
                                "properties": {
                                  "running": {
                                    "type": "object",
                                    "description": "Info about the running duration of this MR Scaler",
                                    "properties": {
                                      "value": {
                                        "type": "number",
                                        "format": "float",
                                        "description": "The duration this object has been running, denominated in `unit`\n",
                                        "example": 294.3
                                      },
                                      "unit": {
                                        "type": "string",
                                        "example": "hours",
                                        "description": "Unit of denomination\n"
                                      }
                                    }
                                  },
                                  "savings": {
                                    "type": "object",
                                    "description": "Info about the savings accrued on this MR Scaler",
                                    "properties": {
                                      "value": {
                                        "type": "number",
                                        "format": "float",
                                        "description": "The savings accrued during the running duration\n",
                                        "example": 60.5263
                                      },
                                      "unit": {
                                        "type": "string",
                                        "example": "percentage",
                                        "description": "Unit of denomination\n"
                                      }
                                    }
                                  },
                                  "costs": {
                                    "type": "object",
                                    "description": "Info on the costs of running this MR Scaler",
                                    "properties": {
                                      "actual": {
                                        "type": "number",
                                        "format": "float",
                                        "description": "The costs during the running duration\n",
                                        "example": 8.829
                                      },
                                      "potential": {
                                        "type": "number",
                                        "format": "float",
                                        "description": "The costs that would have been incurred if this MR Scaler wasn't running on Spot\n",
                                        "example": 22.3668
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:emr:mrScaler:costs"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/status": {
      "get": {
        "summary": "Get Elastigroup Status",
        "description": "Describes the current status of a specific Elastigroup – entailing information regarding running instance and their status\n",
        "operationId": "elastigroupAwsStatus",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123456789",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "e593ff58-067d-4340-92f9-8b1c0bad70d7",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345678/status",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-06-20T11:35:01.745Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "Instance Status",
                                "properties": {
                                  "spotInstanceRequestId": {
                                    "type": "string",
                                    "title": "Spot Instance Request ID",
                                    "example": "sir-3thgagpn"
                                  },
                                  "instanceId": {
                                    "type": "string",
                                    "title": "Instance ID",
                                    "example": "i-0cc289f12538e4758"
                                  },
                                  "instanceType": {
                                    "type": "string",
                                    "title": "Instance Type",
                                    "example": "t2.micro"
                                  },
                                  "product": {
                                    "type": "string",
                                    "title": "Operating System",
                                    "example": "Linux/UNIX"
                                  },
                                  "groupId": {
                                    "type": "string",
                                    "title": "Group ID",
                                    "example": "sig-12345678"
                                  },
                                  "availabilityZone": {
                                    "type": "string",
                                    "title": "AWS Availability Zone",
                                    "example": "us-west-2a"
                                  },
                                  "privateIp": {
                                    "type": "string",
                                    "title": "Private IP",
                                    "example": "172.31.28.210"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "title": "Creation Date & Time",
                                    "example": "2018-06-25T11:49:00.000Z"
                                  },
                                  "publicIp": {
                                    "type": "string",
                                    "title": "Public IP",
                                    "example": "10.10.10.10"
                                  },
                                  "status": {
                                    "type": "string",
                                    "title": "Status",
                                    "example": "fulfilled"
                                  },
                                  "lockStatus": {
                                    "type": "string",
                                    "title": "Lock Status",
                                    "example": "locked",
                                    "enum": [
                                      "locked",
                                      "unlocked"
                                    ]
                                  },
                                  "protectedUntil": {
                                    "type": "string",
                                    "title": "Protected Until",
                                    "example": "2021-12-29T11:23:02.714Z"
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 2,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/events": {
      "get": {
        "summary": "Activity Events",
        "description": "Get historical data on events that happened in a specific Elastigroup like update, scaling activities, creation of new instances, etc.\n",
        "operationId": "elastigroupAwsActivityEvents",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "fromDate",
            "example": "2016-10-01",
            "description": "Starting date to fetch the events from\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123456789",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/events?fromDate=2016-10-01",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-01-21T17:12:51.451Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "groupId": {
                                        "type": "string",
                                        "title": "Group Id",
                                        "example": "sig-12345"
                                      },
                                      "eventType": {
                                        "type": "string",
                                        "title": "Event Type",
                                        "example": "Update"
                                      },
                                      "createdAt": {
                                        "type": "string",
                                        "title": "Created At",
                                        "example": "2016-01-21T17:10:04.000+0000"
                                      },
                                      "subEvents": {
                                        "type": "object",
                                        "title": "Sub Event",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "title": "Type",
                                            "example": "scaleUp"
                                          },
                                          "newSpots": {
                                            "type": "string",
                                            "example": [
                                              {
                                                "spotInstanceRequestId": "sir-0294dbzt"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-02940b7h"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-028z1age"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-028z456e"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-028wg6gr"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-0294a9v5"
                                              }
                                            ]
                                          },
                                          "newInstances": {
                                            "type": "array",
                                            "items": {
                                              "type": "string"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "groupId": {
                                        "type": "string",
                                        "title": "Group Id",
                                        "example": "sig-12345"
                                      },
                                      "eventType": {
                                        "type": "string",
                                        "title": "Event Type",
                                        "example": "Update"
                                      },
                                      "createdAt": {
                                        "type": "string",
                                        "title": "Created At",
                                        "example": "2016-01-21T17:10:04.000+0000"
                                      },
                                      "subEvents": {
                                        "type": "object",
                                        "title": "Sub Event",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "title": "Type",
                                            "example": "scaleUp"
                                          },
                                          "newSpots": {
                                            "type": "string",
                                            "example": [
                                              {
                                                "spotInstanceRequestId": "sir-0294dbzt"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-02940b7h"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-028z1age"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-028z456e"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-028wg6gr"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-0294a9v5"
                                              }
                                            ]
                                          },
                                          "newInstances": {
                                            "type": "array",
                                            "items": {
                                              "type": "string"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "groupId": {
                                        "type": "string",
                                        "title": "Group Id",
                                        "example": "sig-12345"
                                      },
                                      "eventType": {
                                        "type": "string",
                                        "title": "Event Type",
                                        "example": "Update"
                                      },
                                      "createdAt": {
                                        "type": "string",
                                        "title": "Created At",
                                        "example": "2016-01-21T17:10:04.000+0000"
                                      },
                                      "subEvents": {
                                        "type": "object",
                                        "title": "Sub Event",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "title": "Type",
                                            "example": "scaleUp"
                                          },
                                          "newSpots": {
                                            "type": "string",
                                            "example": [
                                              {
                                                "spotInstanceRequestId": "sir-0294dbzt"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-02940b7h"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-028z1age"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-028z456e"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-028wg6gr"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-0294a9v5"
                                              }
                                            ]
                                          },
                                          "newInstances": {
                                            "type": "array",
                                            "items": {
                                              "type": "string"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "groupId": {
                                        "type": "string",
                                        "title": "Group Id",
                                        "example": "sig-12345"
                                      },
                                      "eventType": {
                                        "type": "string",
                                        "title": "Event Type",
                                        "example": "Update"
                                      },
                                      "createdAt": {
                                        "type": "string",
                                        "title": "Created At",
                                        "example": "2016-01-21T17:10:04.000+0000"
                                      },
                                      "subEvents": {
                                        "type": "object",
                                        "title": "Sub Event",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "title": "Type",
                                            "example": "scaleUp"
                                          },
                                          "newSpots": {
                                            "type": "string",
                                            "example": [
                                              {
                                                "spotInstanceRequestId": "sir-0294dbzt"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-02940b7h"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-028z1age"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-028z456e"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-028wg6gr"
                                              },
                                              {
                                                "spotInstanceRequestId": "sir-0294a9v5"
                                              }
                                            ]
                                          },
                                          "newInstances": {
                                            "type": "array",
                                            "items": {
                                              "type": "string"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                ]
                              },
                              "example": [
                                {
                                  "groupId": "sig-12345",
                                  "eventType": "Update",
                                  "createdAt": "2016-01-21T17:10:04.000+0000",
                                  "subEvents": {
                                    "type": "scaleUp",
                                    "newSpots": [
                                      {
                                        "spotInstanceRequestId": "sir-0294dbzt"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-02940b7h"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-028z1age"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-028z456e"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-028wg6gr"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-0294a9v5"
                                      }
                                    ]
                                  },
                                  "newInstances": [
                                    "string"
                                  ]
                                },
                                {
                                  "groupId": "sig-12345",
                                  "eventType": "Update",
                                  "createdAt": "2016-01-21T17:10:04.000+0000",
                                  "subEvents": {
                                    "type": "scaleUp",
                                    "newSpots": [
                                      {
                                        "spotInstanceRequestId": "sir-0294dbzt"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-02940b7h"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-028z1age"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-028z456e"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-028wg6gr"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-0294a9v5"
                                      }
                                    ]
                                  },
                                  "newInstances": [
                                    "string"
                                  ]
                                },
                                {
                                  "groupId": "sig-12345",
                                  "eventType": "Update",
                                  "createdAt": "2016-01-21T17:10:04.000+0000",
                                  "subEvents": {
                                    "type": "scaleUp",
                                    "newSpots": [
                                      {
                                        "spotInstanceRequestId": "sir-0294dbzt"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-02940b7h"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-028z1age"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-028z456e"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-028wg6gr"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-0294a9v5"
                                      }
                                    ]
                                  },
                                  "newInstances": [
                                    "string"
                                  ]
                                },
                                {
                                  "groupId": "sig-12345",
                                  "eventType": "Update",
                                  "createdAt": "2016-01-21T17:10:04.000+0000",
                                  "subEvents": {
                                    "type": "scaleUp",
                                    "newSpots": [
                                      {
                                        "spotInstanceRequestId": "sir-0294dbzt"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-02940b7h"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-028z1age"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-028z456e"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-028wg6gr"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-0294a9v5"
                                      }
                                    ]
                                  },
                                  "newInstances": [
                                    "string"
                                  ]
                                }
                              ]
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/logs": {
      "get": {
        "summary": "Get Elastilog",
        "description": "You can fetch a group's (Elastigroup/Ocean/Stateful Node) elastilog via the Spot API, in order to be able to consume elastilog from various tools used for log storing and analyzing. Logs have retention of 3 months back, so minimal fromDate should be up to 3 months back at runtime.\n",
        "operationId": "elastigroupAwsGetLogs",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "fromDate",
            "example": "1540036800000",
            "description": "Epoch number that represents the date from which to collect the log (millisecond format)\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "toDate",
            "example": "1542715200000",
            "description": "Epoch number that represents the date until which log is collected (millisecond format)\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "severity",
            "example": "ALL",
            "description": "Severity of log entries to extract. Valid Values: ALL, INFO,DEBUG,WARN. Default: ALL\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "resourceId",
            "example": "i-12345678",
            "description": "Filter extracted log entries for a specific resource id. Default: Null\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "limit",
            "example": "i-12345678",
            "description": "Maximum number of lines to extract in a response. Max value allowed - 1000. Default: 500\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-123456/logs",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group:log",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "example": [
                                  {
                                    "message": "ECS Max Capacity. ECS Autoscaler - Cannot scale up since group has reached maximum capacity",
                                    "severity": "WARN",
                                    "createdAt": "2018-11-19T14:38:34.000Z"
                                  },
                                  {
                                    "message": "Group sig-e0a2bd7c successfully created.",
                                    "severity": "INFO",
                                    "createdAt": "2018-11-19T14:34:15.000Z"
                                  }
                                ]
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 2,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/capacity": {
      "put": {
        "summary": "Update Capacity",
        "description": "Update the capacity of an Elastigroup",
        "operationId": "elastigroupAwsUpdateCapacity",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "spotinst:aws:ec2:group:capacity",
                    "properties": {
                      "capacity": {
                        "type": "object",
                        "title": "Capacity",
                        "properties": {
                          "minimum": {
                            "type": "integer",
                            "example": 1,
                            "default": 0,
                            "description": "Number that indicates minimum instance amount\n"
                          },
                          "maximum": {
                            "type": "integer",
                            "example": 10,
                            "default": 0,
                            "description": "Number that indicates minimum instance amount\n"
                          },
                          "target": {
                            "type": "integer",
                            "example": 2,
                            "default": 0,
                            "description": "Number that indicates amount of desired instances\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-b255ac/capacity?accountId=act-567c21",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "PUT",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-08-20T15:31:12.730Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group:capacity",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1capacity/put/requestBody/content/application~1json/schema/allOf/0"
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/scale/up": {
      "put": {
        "summary": "Scale Up",
        "description": "Add instances to your Elastigroup",
        "operationId": "elastigroupAwsScaleUp",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "adjustment",
            "example": "1",
            "description": "The number of instances to add to the Elastigroup\n",
            "schema": {
              "type": "integer"
            },
            "required": false
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "b57207d0-3ab1-4170-8122-a3db9ac92093",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-abcd1234/scale/up?adjustment=2",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "PUT",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2017-10-04T08:56:38.071Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:scale",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:aws:ec2:scale",
                                "properties": {
                                  "newSpotRequests": {
                                    "type": "array",
                                    "items": {
                                      "type": "object"
                                    },
                                    "description": "New Spot Requests",
                                    "example": [
                                      {
                                        "spotInstanceRequestId": "sir-45sr8c7n",
                                        "instanceId": "i-12345abcde12345",
                                        "availabilityZone": "us-west-2a",
                                        "instanceType": "m3.medium"
                                      },
                                      {
                                        "spotInstanceRequestId": "sir-pzb8a2an",
                                        "instanceId": "i-abcde12345abcde",
                                        "availabilityZone": "us-west-2a",
                                        "instanceType": "m3.medium"
                                      }
                                    ]
                                  },
                                  "newInstances": {
                                    "type": "string",
                                    "description": "New Instances",
                                    "example": null
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/scale/down": {
      "put": {
        "summary": "Scale Down",
        "description": "Remove instances from your Elastigroup. Note - Scale Advanced expression Remove instances from your Elastigroup",
        "operationId": "elastigroupAwsScaleDown",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "adjustment",
            "example": "1",
            "description": "The number of instances to add to the Elastigroup\n",
            "schema": {
              "type": "integer"
            },
            "required": false
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "ff3e1e5b-91b8-42fa-8267-b988efc7f662",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/scale/down?adjustment=1",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "PUT",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "time": {
                              "type": "string",
                              "example": "2015-06-29T13:01:55.060Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:scale",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:aws:ec2:scale",
                                "properties": {
                                  "victimSpotRequests": {
                                    "type": "array",
                                    "description": "Victim Spot Requests",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "spotInstanceRequestId": {
                                          "type": "string",
                                          "description": "Spot Instance Request ID",
                                          "example": "sir-02447qg2"
                                        },
                                        "instanceId": {
                                          "type": "string",
                                          "description": "Instance ID",
                                          "example": "i-933esr1"
                                        }
                                      }
                                    }
                                  },
                                  "victimInstances": {
                                    "type": "array",
                                    "description": "Victim Instances",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "instanceId": {
                                          "type": "string",
                                          "description": "Instance ID",
                                          "example": "i-02447t22"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/scale/suspendPolicy": {
      "post": {
        "summary": "Suspend Scaling Policies",
        "description": "Suspend processes inside your Elastigroup",
        "operationId": "elastigroupAwsSuspendScalingPolicies",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "policyName",
            "example": "Example Policy Name",
            "description": "Policy Name of scaling policy to suspend\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "suspension": {
                        "type": "object",
                        "title": "Suspension",
                        "properties": {
                          "ttlInMinutes": {
                            "type": "integer",
                            "example": 10,
                            "description": "Set TTL in minutes. min value: 1 (one minute). max value: 10080 (one week)\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Suspend Scaling Policies Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "0bb5db74-2457-4a34-b8f3-174e6bf5578e",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/scale/suspendPolicy?accountId=act-1234567&policyName=myscalingpolicyname",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-06-19T08:41:57.516Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:suspension",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:aws:ec2:suspension",
                                "properties": {
                                  "groupId": {
                                    "type": "string",
                                    "title": "Group ID",
                                    "example": "sig-12345"
                                  },
                                  "policyName": {
                                    "type": "string",
                                    "title": "Policy Name",
                                    "example": "myscalingpolicyname"
                                  },
                                  "state": {
                                    "type": "string",
                                    "title": "State",
                                    "example": "suspended"
                                  },
                                  "expiresAt": {
                                    "type": "string",
                                    "title": "Expires At",
                                    "example": "2016-06-19T08:51:00:00Z"
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/suspension": {
      "post": {
        "summary": "Suspend Processes",
        "description": "Suspend processes inside your Elastigroup",
        "operationId": "elastigroupAwsSuspend",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "Processes",
                    "properties": {
                      "processes": {
                        "type": "array",
                        "description": "The names of the processes that will be suspended. Valid values are: AUTO_SCALE, AUTO_HEALING, OUT_OF_STRATEGY, PREVENTIVE_REPLACEMENT, REVERT_PREFERRED, SCHEDULING\n",
                        "items": {
                          "type": "string",
                          "example": [
                            "AUTO_SCALE",
                            "OUT_OF_STRATEGY",
                            "PREVENTIVE_REPLACEMENT"
                          ]
                        }
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "Suspensions",
                    "properties": {
                      "suspensions": {
                        "type": "array",
                        "description": "A list of processes to suspend",
                        "items": {
                          "type": "object",
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "The name of the process that will be suspended. Valid values are: AUTO_SCALE, AUTO_HEALING, OUT_OF_STRATEGY, PREVENTIVE_REPLACEMENT, REVERT_PREFERRED, SCHEDULING\n"
                            },
                            "ttlInMinutes": {
                              "type": "integer",
                              "description": "This is the TTL, time to live, of the suspension in minutes. The default value is null, which denotes that the suspension is indefinite until specifically deleted\n"
                            }
                          }
                        },
                        "example": [
                          {
                            "name": "AUTO_SCALE"
                          },
                          {
                            "name": "OUT_OF_STRATEGY",
                            "ttlInMinutes": 30
                          },
                          {
                            "name": "PREVENTIVE_REPLACEMENT",
                            "ttlInMinutes\"": 120
                          },
                          {
                            "name": "REVERT_PREFERRED"
                          },
                          {
                            "name": "SCHEDULING"
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Suspend Processes  Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "0bb5db74-2457-4a34-b8f3-174e6bf5578e",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/suspension",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-06-19T08:41:57.516Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:suspension",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "groupId": {
                                    "type": "string",
                                    "description": "Elastigroup ID",
                                    "example": "sig-12345"
                                  },
                                  "processes": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "AUTO_SCALE"
                                      ]
                                    }
                                  },
                                  "suspensions": {
                                    "type": "array",
                                    "description": "Suspensions",
                                    "items": {
                                      "type": "object",
                                      "example": [
                                        {
                                          "name": "AUTO_SCALE",
                                          "expiresAt": null
                                        },
                                        {
                                          "name": "OUT_OF_STRATEGY",
                                          "expiresAt": "2018-10-03T07:23:24.000+0000"
                                        },
                                        {
                                          "name": "PREVENTIVE_REPLACEMENT",
                                          "expiresAt": "2018-10-03T09:03:24.000+0000"
                                        },
                                        {
                                          "name": "REVERT_PREFERRED",
                                          "expiresAt": null
                                        },
                                        {
                                          "name": "SCHEDULING",
                                          "expiresAt": null
                                        }
                                      ]
                                    }
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 4,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Suspended Processes",
        "description": "List all active Suspended processes for specific Elastigroup",
        "operationId": "elastigroupAwsListSuspended",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123456789",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "List Suspended Processes  Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "67582d0c-108b-4ef7-9fdc-d39678a30844",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/suspension",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-01-07T07:30:58.622Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:suspension",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "groupId": {
                                    "type": "string",
                                    "example": "sig-12345",
                                    "description": "Elastigroup ID"
                                  },
                                  "processes": {
                                    "type": "string",
                                    "description": "Processes",
                                    "example": [
                                      "AUTO_SCALE"
                                    ]
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Remove Suspended Processes",
        "description": "Remove active suspension from Elastigroup",
        "operationId": "elastigroupAwsRemoveSuspended",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123456789",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "processes": {
                        "type": "array",
                        "title": "Processes",
                        "description": "The list of processes to remove from suspension. Valid values are: AUTO_SCALE, AUTO_HEALING, OUT_OF_STRATEGY, PREVENTIVE_REPLACEMENT, REVERT_PREFERRED, SCHEDULING\n",
                        "items": {
                          "type": "string",
                          "example": [
                            "AUTO_SCALE"
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Remove Suspended Processes  Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "848f3db7-b731-4b1b-9227-253a545e90eb",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/suspension",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "DELETE",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-06-21T11:54:12.513Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:suspension",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "Metadata Options Update",
                                "description": "Request - Example 6 - Update Metadata Options",
                                "properties": {
                                  "group": {
                                    "type": "object",
                                    "title": "AWS Elastigroup",
                                    "properties": {
                                      "compute": {
                                        "type": "object",
                                        "title": "Compute Attribute",
                                        "properties": {
                                          "launchSpecification": {
                                            "type": "object",
                                            "title": "Virtual Node Group Attribute",
                                            "properties": {
                                              "metadataOptions": {
                                                "type": "object",
                                                "title": "Metadata Options Attribute",
                                                "properties": {
                                                  "httpTokens": {
                                                    "type": "string",
                                                    "example": "optional",
                                                    "description": "Http Token\n"
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 0,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/scale/suspensions": {
      "get": {
        "summary": "List Suspended Scaling Policies",
        "description": "Suspended scaling policies inside your Elastigroup",
        "operationId": "elastigroupAwsListSuspendScalingPolicies",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123456789",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "List Suspended Scaling Policies  Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "0bb5db74-2457-4a34-b8f3-174e6bf5578e",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/scale/suspensions?accountId=act-1234567",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-06-19T08:41:57.516Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:suspension",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "scalePolicySuspensions": {
                                    "type": "object",
                                    "example": [
                                      {
                                        "groupId": "sig-12345",
                                        "policyName": "test",
                                        "state": "suspended"
                                      },
                                      {
                                        "groupId": "sig-12345",
                                        "policyName": "down Scaling Policy 1",
                                        "state": "suspended"
                                      }
                                    ]
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 2,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/scale/resumePolicy": {
      "post": {
        "summary": "Remove Suspended Scaling Policies",
        "description": "Resume suspended scaling policies inside your Elastigroup",
        "operationId": "elastigroupAwsResumeScalingPolicies",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123456789",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "policyName",
            "example": "policy_1",
            "description": "Name of the suspended scaling policy to remove from suspension\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "848f3db7-b731-4b1b-9227-253a545e90eb",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/scale/resumePolicy?policyName=myscalingpolicyname",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-06-21T11:54:12.513Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:suspension",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object"
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 0,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/potentialSavings": {
      "get": {
        "summary": "Potential Savings",
        "description": "Describe Potential Savings for AWS resources like - ASG (Auto-scaling groups), Beanstalk, ELB, ECS, EMR and tagged instances. The response will provide Potential monthly savings in USD",
        "operationId": "elastigroupAwsPotentialSavings",
        "tags": [
          "Insights Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123456789",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Potential Savings Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/suspension",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:cs:aws:potentialSavings",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "array",
                                "title": "spotinst:cs:aws:potentialSavings",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "resourceType": {
                                      "type": "string",
                                      "example": "Auto Scaling Group"
                                    },
                                    "name": {
                                      "type": "string",
                                      "example": "Prod_ASG"
                                    },
                                    "region": {
                                      "type": "string",
                                      "example": "us-west-1"
                                    },
                                    "instances": {
                                      "type": "integer",
                                      "example": 5
                                    },
                                    "instanceTypes": {
                                      "type": "string",
                                      "example": [
                                        "c4.4xlarge"
                                      ]
                                    },
                                    "potentialSavings": {
                                      "type": "integer",
                                      "example": 2700
                                    }
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/instancePotentialSavings": {
      "get": {
        "summary": "Instances Potential Savings",
        "description": "Describe potential savings for the listed instances. You can provide multiple instance IDs separated by a comma. The response will provide potential monthly savings in USD.",
        "operationId": "elastigroupAwsInstancesPotentialSavings",
        "tags": [
          "Insights Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "region",
            "example": "us-east-1",
            "description": "The AWS Region\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "instanceIds",
            "example": "i-1234567",
            "description": "The instance ID\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Instances Potential Savings Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "ff3e1e5b-91b8-42fa-8267-b988efc7f662",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/instancePotentialSavings?instanceIds=i-08674ba9a6ddb73f4%2Ci-0973dc7a755d34894®ion=us-west-2",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2015-06-29T13:01:55.060Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:cs:aws:potentialSavings",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:cs:aws:potentialSavings",
                                "properties": {
                                  "newSpotRequests": {
                                    "type": "array",
                                    "items": {
                                      "type": "object"
                                    },
                                    "description": "New Spot Requests",
                                    "example": [
                                      {
                                        "resourceType": "EC2Instance",
                                        "name": "i-12345abcde12345",
                                        "instances": 1,
                                        "instanceTypes": [
                                          "t2.medium"
                                        ],
                                        "potentialSavings": 28
                                      },
                                      {
                                        "resourceType": "EC2Instance",
                                        "name": "i-0973dc7a755d34894",
                                        "instances": 1,
                                        "instanceTypes": [
                                          "m4.large"
                                        ],
                                        "potentialSavings": 60
                                      }
                                    ]
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 2,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/costs": {
      "get": {
        "summary": "Get Costs per Account",
        "description": "Retrieve costs up to one year back per specified account over a specified time period.",
        "operationId": "awsCostsPerAccount",
        "tags": [
          "Insights Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123456789",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "fromDate",
            "example": "2018-06-20",
            "description": "Date can be either in ISO-8601 date format (yyyy-mm-dd) or in Unix Timestamp format (e.g. 1494751821472).\n*Minimum from date can be one year ago.\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "toDate",
            "example": "2018-11-20",
            "description": "Date can be either in ISO-8601 date format (yyyy-mm-dd) or in Unix Timestamp format (e.g. 1494751821472).\n*Data is shown until the past day (Does not include today's costs)\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "aggregationPeriod",
            "example": "daily",
            "description": "Optional. The time period over which data is aggregated. Can only be \"daily\". For example, the figures in each data set are per day\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Costs Per Account Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "67582d0c-108b-4ef7-9fdc-d39678a30844",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/costs",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-01-07T07:30:58.622Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:costs",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "array",
                                "title": "spotinst:aws:ec2:group",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "timestamp": {
                                      "type": "string",
                                      "example": "2020-03-06T00:00:00.000Z",
                                      "description": "Time"
                                    },
                                    "spot": {
                                      "type": "object",
                                      "properties": {
                                        "runningHours": {
                                          "type": "number",
                                          "format": "float",
                                          "example": 1470.8
                                        },
                                        "actualCosts": {
                                          "type": "number",
                                          "format": "float",
                                          "example": 107.3
                                        },
                                        "potentialCosts": {
                                          "type": "number",
                                          "format": "float",
                                          "example": 378.41
                                        },
                                        "savingsPercentage": {
                                          "type": "number",
                                          "format": "float",
                                          "example": 71.64
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/costs": {
      "get": {
        "summary": "Get Costs per Elastigroup",
        "description": "Get financial information on a specific Elastigroup, return only Spot costs.",
        "operationId": "awsCostsPerElastigroup",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "fromDate",
            "example": "2018-06-20",
            "description": "Data values following either a date format (YYYY-MM-DDTHH:mm:ss.SSSZ ; 2016-01-10T00:00:00.000Z) or Unix seconds Timestamp (1494751821)\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "toDate",
            "example": "2018-11-20",
            "description": "Data values following either a date format (YYYY-MM-DDTHH:mm:ss.SSSZ ; 2016-01-10T00:00:00.000Z) or Unix seconds Timestamp (1494751821)\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "aggregationPeriod",
            "example": "daily",
            "description": "Optional. The time period over which data is aggregated. Can only be \"daily\". For example, the figures in each data set are per day\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Costs Per Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-48d79900/costs?fromDate=2018-03-06&toDate=2019-02-27",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-01-21T17:12:51.451Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group:stats",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "array",
                                "title": "spotinst:aws:ec2:group:stats",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "running": {
                                      "type": "object",
                                      "title": "Running",
                                      "properties": {
                                        "value": {
                                          "type": "string",
                                          "example": 0,
                                          "description": "Value\n"
                                        },
                                        "unit": {
                                          "type": "string",
                                          "example": "hours",
                                          "description": "Unit\n"
                                        }
                                      }
                                    },
                                    "savings": {
                                      "type": "object",
                                      "title": "Running",
                                      "properties": {
                                        "value": {
                                          "type": "integer",
                                          "example": 0
                                        },
                                        "unit": {
                                          "type": "string",
                                          "example": "percentage"
                                        }
                                      }
                                    },
                                    "costs": {
                                      "type": "object",
                                      "title": "Running",
                                      "properties": {
                                        "actual": {
                                          "type": "integer",
                                          "example": 0
                                        },
                                        "potential": {
                                          "type": "integer",
                                          "example": 0
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/costs/detailed": {
      "get": {
        "summary": "Detailed Cost",
        "description": "Get detailed financial information on a specific Elastigroup, for all lifecycles.",
        "operationId": "elastigroupAwsDetailedCosts",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "fromDate",
            "example": "2018-06-20",
            "description": "Data values following either a date format (YYYY-MM-DDTHH:mm:ss.SSSZ ; 2016-01-10T00:00:00.000Z) or Unix seconds Timestamp (1494751821)\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "toDate",
            "example": "2018-11-20",
            "description": "Data values following either a date format (YYYY-MM-DDTHH:mm:ss.SSSZ ; 2016-01-10T00:00:00.000Z) or Unix seconds Timestamp (1494751821)\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "aggregationPeriod",
            "example": "daily",
            "description": "Optional. The time period over which data is aggregated. Can only be \"daily\". For example, the figures in each data set are per day\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Detailed Cost Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/costs/detailed",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-01-21T17:12:51.451Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "groupId": {
                                        "type": "string",
                                        "title": "Group Id",
                                        "example": "sig-12345"
                                      },
                                      "instanceId": {
                                        "type": "string",
                                        "title": "Instance ID",
                                        "example": "i-326129e1"
                                      },
                                      "spotInstanceRequestId": {
                                        "type": "string",
                                        "title": "Spot Instance Request ID",
                                        "example": null
                                      },
                                      "instanceType": {
                                        "type": "string",
                                        "title": "Instance Type",
                                        "example": "m3.medium"
                                      },
                                      "availabilityZone": {
                                        "type": "string",
                                        "title": "Availability Zone",
                                        "example": "us-east-1a"
                                      },
                                      "running": {
                                        "type": "object",
                                        "properties": {
                                          "value": {
                                            "type": "integer",
                                            "title": "Value",
                                            "example": 4
                                          },
                                          "unit": {
                                            "type": "string",
                                            "title": "Unit",
                                            "example": "hours"
                                          }
                                        }
                                      },
                                      "savings": {
                                        "type": "object",
                                        "properties": {
                                          "value": {
                                            "type": "integer",
                                            "title": "Value",
                                            "example": 4
                                          },
                                          "unit": {
                                            "type": "string",
                                            "title": "Unit",
                                            "example": "percentage"
                                          }
                                        }
                                      },
                                      "costs": {
                                        "type": "object",
                                        "properties": {
                                          "actual": {
                                            "type": "number",
                                            "format": "float",
                                            "title": "Actual",
                                            "example": 0.268
                                          },
                                          "potential": {
                                            "type": "number",
                                            "format": "float",
                                            "title": "Potential",
                                            "example": 0.268
                                          }
                                        }
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "groupId": {
                                        "type": "string",
                                        "title": "Group Id",
                                        "example": "sig-d56b9e37v"
                                      },
                                      "instanceId": {
                                        "type": "string",
                                        "title": "Instance ID",
                                        "example": "i-326129e1"
                                      },
                                      "spotInstanceRequestId": {
                                        "type": "string",
                                        "title": "Spot Instance Request ID",
                                        "example": "sir-02epa938"
                                      },
                                      "instanceType": {
                                        "type": "string",
                                        "title": "Instance Type",
                                        "example": "m3.large"
                                      },
                                      "availabilityZone": {
                                        "type": "string",
                                        "title": "Availability Zone",
                                        "example": "us-east-1a"
                                      },
                                      "running": {
                                        "type": "object",
                                        "properties": {
                                          "value": {
                                            "type": "integer",
                                            "title": "Value",
                                            "example": 4
                                          },
                                          "unit": {
                                            "type": "string",
                                            "title": "Unit",
                                            "example": "hours"
                                          }
                                        }
                                      },
                                      "savings": {
                                        "type": "object",
                                        "properties": {
                                          "value": {
                                            "type": "number",
                                            "format": "float",
                                            "title": "Value",
                                            "example": 89.3233
                                          },
                                          "unit": {
                                            "type": "string",
                                            "title": "Unit",
                                            "example": "percentage"
                                          }
                                        }
                                      },
                                      "costs": {
                                        "type": "object",
                                        "properties": {
                                          "actual": {
                                            "type": "number",
                                            "format": "float",
                                            "title": "Actual",
                                            "example": 0.0568
                                          },
                                          "potential": {
                                            "type": "number",
                                            "format": "float",
                                            "title": "Potential",
                                            "example": 0.532
                                          }
                                        }
                                      }
                                    }
                                  }
                                ]
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/instance/{instanceId}": {
      "get": {
        "summary": "Instance Status",
        "description": "Get the current instance status Possible status values - Active and Terminating",
        "operationId": "awsInstanceStatus",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "instanceId",
            "example": "i-123456",
            "description": "The instance ID you want to query\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Instance Status Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "ff3e1e5b-91b8-42fa-8267-b988efc7f662",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/instance/i-123456",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2015-06-29T13:01:55.060Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:instance",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:aws:ec2:instance",
                                "properties": {
                                  "instanceId": {
                                    "type": "string",
                                    "title": "Instance ID",
                                    "example": "i-326129e1"
                                  },
                                  "lifeCycleState": {
                                    "type": "string",
                                    "title": "Lifecycle State",
                                    "example": "ACTIVE"
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/instance/import": {
      "post": {
        "summary": "Import EC2 Instance",
        "description": "Import an EC2 instance into a new Elastigroup\n",
        "operationId": "elastigroupAwsImportInstance",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "region",
            "example": "us-east-2",
            "description": "The AWS region to create the new Elastigroup in\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "instanceId",
            "example": "i-008a13360040aa88e",
            "description": "Enter the AWS instance Id of the instance to import\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "group": {
                        "type": "object",
                        "title": "Group",
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "EG_Name",
                            "description": "The name of the new Elastigroup\n"
                          },
                          "spotInstanceTypes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Optionally provide a list of spot instance types to improve spot market availability for the Elastigroup. Overrides the imported instance type.\n",
                            "example": [
                              "m3.large",
                              "c3.large"
                            ]
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Import EC2 Instance Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "ff3e1e5b-91b8-42fa-8267-b988efc7f662",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "string",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2015-06-29T13:01:55.060Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "title": "object",
                                "type": "object"
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/amiBackup": {
      "post": {
        "summary": "AMI Backup",
        "description": "Get status of a specific deployment",
        "operationId": "elastigroupAwsAmiBackup",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "AMI Backup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-61236h9d/amiBackup",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-01-21T17:12:51.451Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group:amiBackup",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object"
                              },
                              "description": "Array of data objects\n",
                              "example": true
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/instanceHealthiness": {
      "get": {
        "summary": "Instance Healthiness",
        "description": "Get a list of instances with health status. In case a shutdown script is configured for the group, it will also retrieve the Spot Agent health status.",
        "operationId": "elastigroupAwsInstanceHealthiness",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Instance Healthiness Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "ff3e1e5b-91b8-42fa-8267-b988efc7f662",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-1b656b92/instanceHealthiness",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2015-06-29T13:01:55.060Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group:instanceHealthiness",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "Instance Healthiness",
                                "properties": {
                                  "instanceId": {
                                    "type": "string",
                                    "description": "Instance ID",
                                    "example": "i-07593cd9173cd9667"
                                  },
                                  "spotRequestId": {
                                    "type": "string",
                                    "description": "Spot Request ID",
                                    "example": "sir-xjag9yqp"
                                  },
                                  "groupId": {
                                    "type": "string",
                                    "description": "Group ID",
                                    "example": "sig-1b656b92"
                                  },
                                  "availabilityZone": {
                                    "type": "string",
                                    "description": "Availability Zone",
                                    "example": "us-west-2b"
                                  },
                                  "lifeCycle": {
                                    "type": "string",
                                    "description": "Life Cycle",
                                    "example": "SPOT"
                                  },
                                  "healthStatus": {
                                    "type": "string",
                                    "description": "Health Status",
                                    "enum": [
                                      "HEALTHY",
                                      "UNHEALTHY",
                                      "INSUFFICIENT_DATA",
                                      "UNKNOWN"
                                    ],
                                    "example": "HEALTHY"
                                  },
                                  "agentHealth": {
                                    "type": "object",
                                    "title": "Spot Agent Health",
                                    "properties": {
                                      "status": {
                                        "type": "string",
                                        "enum": [
                                          "HEALTHY",
                                          "UNHEALTHY",
                                          "UNKNOWN"
                                        ],
                                        "description": "Spot Agent health status",
                                        "example": "HEALTHY"
                                      },
                                      "lastChecked": {
                                        "type": "string",
                                        "description": "The last time Spot received a health signal from the instance",
                                        "example": "2021-12-15T14:43:46.000Z"
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/detachInstances": {
      "put": {
        "summary": "Detach Instance",
        "description": "Detach instances from your Elastigroup",
        "operationId": "elastigroupAwsDetachInstance",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "instancesToDetach": {
                        "type": "object",
                        "title": "Instances to be detached",
                        "description": "Instances to be detached",
                        "example": [
                          "i-123456",
                          "i-456798"
                        ]
                      },
                      "shouldTerminateInstances": {
                        "type": "boolean",
                        "title": "Termination criteria",
                        "description": "Should Terminate Instances Criteria",
                        "example": true
                      },
                      "shouldDecrementTargetCapacity": {
                        "type": "boolean",
                        "title": "Decrement target capacity criteria",
                        "description": "Should Decrement Target Capacity Criteria",
                        "example": false
                      },
                      "drainingTimeout": {
                        "type": "integer",
                        "title": "Time",
                        "description": "Draining Timeout",
                        "example": 300
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Detach Instance Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "0bb5db74-2457-4a34-b8f3-174e6bf5578e",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/detachInstances",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "PUT",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-06-19T08:41:57.516Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:detachInstances",
                              "description": "The data type of each item in the response\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/autoScalingGroup/import": {
      "post": {
        "summary": "Import ASG",
        "description": "Create a new Elastigroup – this Elastigroup will have the same configuration of the imported Autoscaling group",
        "operationId": "elastigroupAwsImportAsg",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "autoScalingGroupName",
            "example": "MyASG",
            "description": "The ASG name\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "region",
            "example": "us-east-1",
            "description": "The AWS region for the ASG\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-12345",
            "description": "Your account ID in Spot\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "dryRun",
            "example": true,
            "description": "When `dryRun` is set to `true`, the API call will return the Elastigroup configuration without actually performing any action\n",
            "schema": {
              "type": "boolean"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "group": {
                        "type": "object",
                        "title": "Group",
                        "properties": {
                          "product": {
                            "type": "string",
                            "title": "Product (OS)",
                            "example": "Linux/UNIX",
                            "description": "Operation system type. Possible values: Linux/UNIX | SUSE | Linux Windows | Linux/UNIX (Amazon VPC) | SUSE Linux (Amazon VPC) | Windows (Amazon VPC)\n"
                          },
                          "spotInstanceTypes": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "title": "Product (OS)",
                            "example": [
                              "c3.large",
                              "m4.large"
                            ],
                            "description": "An Array holding the types of instances to be used in the Elastigroup\n"
                          },
                          "name": {
                            "type": "string",
                            "title": "Name",
                            "example": "My Group",
                            "description": "The name of the Elastigroup to be created\n"
                          },
                          "availabilityVsCost": {
                            "type": "string",
                            "enum": [
                              "costOriented",
                              "availabilityOriented",
                              "balanced",
                              "cheapest",
                              "equalAzDistribution"
                            ],
                            "default": "balanced",
                            "description": "How Elastigroup determines which instances to add and replace.\n(please read this article before using [Equal AZ Instance Distribution](https://docs.flexera.com/spot/elastigroup-for-aws/concepts/general-concepts/equal-az-distribution))\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Import ASG Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "ff3e1e5b-91b8-42fa-8267-b988efc7f662",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/autoScalingGroup/import?region=us-west-2&TESTING_ASG",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2015-06-29T13:01:55.060Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:aws:ec2:group",
                                "required": [
                                  "group"
                                ],
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "title": "ID",
                                    "example": "sig-e2927aac"
                                  },
                                  "name": {
                                    "type": "string",
                                    "title": "name",
                                    "example": "TESTING_ASG"
                                  },
                                  "description": {
                                    "type": "string",
                                    "title": "name",
                                    "example": "Imported from auto scaling group TESTING_ASG"
                                  },
                                  "capacity": {
                                    "type": "object",
                                    "properties": {
                                      "target": {
                                        "type": "integer",
                                        "example": 1
                                      },
                                      "minimum": {
                                        "type": "integer",
                                        "example": 0
                                      },
                                      "maximum": {
                                        "type": "integer",
                                        "example": 5
                                      },
                                      "unit": {
                                        "type": "integer",
                                        "example": "instance"
                                      }
                                    }
                                  },
                                  "strategy": {
                                    "type": "object",
                                    "properties": {
                                      "risk": {
                                        "type": "integer",
                                        "example": 100
                                      },
                                      "drainingTimeout": {
                                        "type": "integer",
                                        "example": 0
                                      }
                                    }
                                  },
                                  "compute": {
                                    "type": "object",
                                    "properties": {
                                      "instanceTypes": {
                                        "type": "object",
                                        "properties": {
                                          "ondemand": {
                                            "type": "string",
                                            "example": "m3.medium"
                                          },
                                          "spot": {
                                            "type": "string",
                                            "example": [
                                              "c3.large"
                                            ]
                                          }
                                        }
                                      },
                                      "availabilityZones": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "name": {
                                              "type": "string",
                                              "example": "us-west-2b"
                                            },
                                            "subnetIds": {
                                              "type": "string",
                                              "example": "subnet-2e967065"
                                            }
                                          }
                                        }
                                      },
                                      "product": {
                                        "type": "string",
                                        "example": "Linux/UNIX"
                                      },
                                      "launchSpecification": {
                                        "type": "object",
                                        "properties": {
                                          "loadBalancersConfig": {
                                            "type": "object",
                                            "properties": {
                                              "loadBalancers": {
                                                "type": "object",
                                                "properties": {
                                                  "name": {
                                                    "type": "string",
                                                    "title": "Name",
                                                    "example": "TESTING_ASG"
                                                  },
                                                  "type": {
                                                    "type": "string",
                                                    "title": "Type",
                                                    "example": "CLASSIC"
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          "healthCheckType": {
                                            "type": "string",
                                            "title": "Health Check Type",
                                            "example": "EC2"
                                          },
                                          "healthCheckGracePeriod": {
                                            "type": "integer",
                                            "title": "Health Check Grace Period",
                                            "example": 600
                                          },
                                          "securityGroupIds": {
                                            "type": "string",
                                            "title": "Security Group IDs",
                                            "example": [
                                              "sg-451f8b3a"
                                            ]
                                          },
                                          "monitoring": {
                                            "type": "boolean",
                                            "title": "Monitoring",
                                            "example": false
                                          },
                                          "imageId": {
                                            "type": "string",
                                            "title": "Image ID",
                                            "example": "ami-485eef30"
                                          },
                                          "ebsOptimized": {
                                            "type": "boolean",
                                            "title": "EBS Optomozed",
                                            "example": true
                                          },
                                          "blockDeviceMappings": {
                                            "type": "array",
                                            "title": "Block Device Mappings",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "deviceName": {
                                                  "type": "string",
                                                  "title": "device Name",
                                                  "example": "/dev/sda1"
                                                },
                                                "ebs": {
                                                  "type": "object",
                                                  "properties": {
                                                    "deleteOnTermination": {
                                                      "type": "boolean",
                                                      "title": "Delete On Termination",
                                                      "example": true
                                                    },
                                                    "volumeSize": {
                                                      "type": "integer",
                                                      "title": "Volume Size",
                                                      "example": 30
                                                    },
                                                    "volumeType": {
                                                      "type": "string",
                                                      "title": "Volume Type",
                                                      "example": "gp2"
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "scaling": {
                                    "type": "object"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2020-10-01T05:23:59.302Z"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "example": "2020-10-01T05:23:59.302Z"
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/spotType": {
      "get": {
        "summary": "Instance Type By Region",
        "description": "Get the available spot instances types available in a specific region\n",
        "operationId": "awsElastigroupGetInstanceTypeByRegion",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "region",
            "example": "us-east-2",
            "description": "The AWS region\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Instance Type By Region Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "67582d0c-108b-4ef7-9fdc-d39678a30844",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/spotType?region=us-west-2",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-01-07T07:30:58.622Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:spot:type",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:aws:ec2:spot:type",
                                "example": [
                                  {
                                    "instanceType": "hi1.4xlarge"
                                  },
                                  {
                                    "instanceType": "r5d.4xlarge"
                                  },
                                  {
                                    "instanceType": "r5ad.12xlarge"
                                  },
                                  {
                                    "instanceType": "r4.4xlarge"
                                  },
                                  {
                                    "instanceType": "m1.xlarge"
                                  },
                                  {
                                    "instanceType": "a1.4xlarge"
                                  },
                                  {
                                    "instanceType": "m5a.4xlarge"
                                  },
                                  {
                                    "instanceType": "m3.large"
                                  },
                                  {
                                    "instanceType": "x1e.4xlarge"
                                  },
                                  {
                                    "instanceType": "m5d.4xlarge"
                                  },
                                  {
                                    "instanceType": "m5a.24xlarge"
                                  },
                                  {
                                    "instanceType": "m5a.large"
                                  },
                                  {
                                    "instanceType": "r5d.8xlarge"
                                  },
                                  {
                                    "instanceType": "m3.medium"
                                  },
                                  {
                                    "instanceType": "p2.xlarge"
                                  },
                                  {
                                    "instanceType": "m4.large"
                                  },
                                  {
                                    "instanceType": "m5.24xlarge"
                                  },
                                  {
                                    "instanceType": "r5a.4xlarge"
                                  },
                                  {
                                    "instanceType": "c5.large"
                                  },
                                  {
                                    "instanceType": "m5ad.xlarge"
                                  },
                                  {
                                    "instanceType": "m5d.large"
                                  },
                                  {
                                    "instanceType": "r5d.12xlarge"
                                  },
                                  {
                                    "instanceType": "r5a.2xlarge"
                                  },
                                  {
                                    "instanceType": "m3.2xlarge"
                                  },
                                  {
                                    "instanceType": "t3a.large"
                                  },
                                  {
                                    "instanceType": "t2.medium"
                                  },
                                  {
                                    "instanceType": "i3.2xlarge"
                                  },
                                  {
                                    "instanceType": "p3.2xlarge"
                                  },
                                  {
                                    "instanceType": "cc2.8xlarge"
                                  },
                                  {
                                    "instanceType": "i3.xlarge"
                                  },
                                  {
                                    "instanceType": "r3.2xlarge"
                                  },
                                  {
                                    "instanceType": "i3.8xlarge"
                                  },
                                  {
                                    "instanceType": "c4.8xlarge"
                                  },
                                  {
                                    "instanceType": "r5.metal"
                                  },
                                  {
                                    "instanceType": "m4.10xlarge"
                                  },
                                  {
                                    "instanceType": "m1.large"
                                  },
                                  {
                                    "instanceType": "r5d.2xlarge"
                                  },
                                  {
                                    "instanceType": "t1.micro"
                                  },
                                  {
                                    "instanceType": "i2.4xlarge"
                                  },
                                  {
                                    "instanceType": "r5a.24xlarge"
                                  },
                                  {
                                    "instanceType": "z1d.2xlarge"
                                  },
                                  {
                                    "instanceType": "r5.xlarge"
                                  },
                                  {
                                    "instanceType": "m5ad.large"
                                  },
                                  {
                                    "instanceType": "h1.4xlarge"
                                  },
                                  {
                                    "instanceType": "m5d.12xlarge"
                                  },
                                  {
                                    "instanceType": "c5.2xlarge"
                                  },
                                  {
                                    "instanceType": "x1e.8xlarge"
                                  },
                                  {
                                    "instanceType": "d2.8xlarge"
                                  },
                                  {
                                    "instanceType": "r5.8xlarge"
                                  },
                                  {
                                    "instanceType": "c3.large"
                                  },
                                  {
                                    "instanceType": "r4.xlarge"
                                  },
                                  {
                                    "instanceType": "m5ad.24xlarge"
                                  },
                                  {
                                    "instanceType": "t3a.xlarge"
                                  },
                                  {
                                    "instanceType": "d2.4xlarge"
                                  },
                                  {
                                    "instanceType": "c5.24xlarge"
                                  },
                                  {
                                    "instanceType": "c5.metal"
                                  },
                                  {
                                    "instanceType": "c1.medium"
                                  },
                                  {
                                    "instanceType": "m1.medium"
                                  },
                                  {
                                    "instanceType": "g3.8xlarge"
                                  },
                                  {
                                    "instanceType": "r4.2xlarge"
                                  },
                                  {
                                    "instanceType": "i3en.6xlarge"
                                  },
                                  {
                                    "instanceType": "t3.small"
                                  },
                                  {
                                    "instanceType": "i3en.large"
                                  },
                                  {
                                    "instanceType": "i3en.24xlarge"
                                  },
                                  {
                                    "instanceType": "t2.xlarge"
                                  },
                                  {
                                    "instanceType": "t3a.medium"
                                  },
                                  {
                                    "instanceType": "m4.16xlarge"
                                  },
                                  {
                                    "instanceType": "x1.32xlarge"
                                  },
                                  {
                                    "instanceType": "r5a.12xlarge"
                                  },
                                  {
                                    "instanceType": "c5d.4xlarge"
                                  },
                                  {
                                    "instanceType": "i3en.12xlarge"
                                  },
                                  {
                                    "instanceType": "c5d.large"
                                  },
                                  {
                                    "instanceType": "g3.16xlarge"
                                  },
                                  {
                                    "instanceType": "c3.2xlarge"
                                  },
                                  {
                                    "instanceType": "x1e.2xlarge"
                                  },
                                  {
                                    "instanceType": "a1.2xlarge"
                                  },
                                  {
                                    "instanceType": "r5ad.xlarge"
                                  },
                                  {
                                    "instanceType": "m5a.xlarge"
                                  },
                                  {
                                    "instanceType": "t2.large"
                                  },
                                  {
                                    "instanceType": "r5ad.large"
                                  },
                                  {
                                    "instanceType": "i3.metal"
                                  },
                                  {
                                    "instanceType": "t3.nano"
                                  },
                                  {
                                    "instanceType": "r5ad.2xlarge"
                                  },
                                  {
                                    "instanceType": "f1.16xlarge"
                                  },
                                  {
                                    "instanceType": "h1.8xlarge"
                                  },
                                  {
                                    "instanceType": "m5.12xlarge"
                                  },
                                  {
                                    "instanceType": "a1.medium"
                                  },
                                  {
                                    "instanceType": "i3en.3xlarge"
                                  },
                                  {
                                    "instanceType": "m5d.8xlarge"
                                  }
                                ]
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 322,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/instanceTypeRecommendation": {
      "post": {
        "summary": "Suggested Instance Type",
        "description": "Get suggested instance types by required resources.\nNote that request must include region, and at least one of the following values - baselineInstanceType, requiredVCpu, requiredMemoryGib",
        "operationId": "elastigroupAwsSuggestedInstanceType",
        "tags": [
          "Insights Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "spotinst:aws:ec2:instanceTypeRecommendation",
                    "properties": {
                      "requirements": {
                        "type": "object",
                        "title": "AWS Elastigroup",
                        "properties": {
                          "region": {
                            "type": "string",
                            "description": "Set valid AWS region",
                            "example": "us-east-1"
                          },
                          "baselineInstanceType": {
                            "type": "string",
                            "description": "Set valid AWS instance type as baseline",
                            "example": "m5.large"
                          },
                          "requiredVCpu": {
                            "type": "object",
                            "description": "Set required CPU resources by min / max",
                            "properties": {
                              "minimum": {
                                "type": "integer",
                                "description": "Minimum amount of VCpu",
                                "example": 2
                              },
                              "maximum": {
                                "type": "integer",
                                "description": "Maximum amount of VCpu",
                                "example": 4
                              }
                            }
                          },
                          "requiredMemoryGib": {
                            "type": "object",
                            "description": "Set required Memory (in Gib) resources by min / max",
                            "properties": {
                              "minimum": {
                                "type": "integer",
                                "description": "Minimum amount of Gib",
                                "example": 16
                              },
                              "maximum": {
                                "type": "integer",
                                "description": "Maximum amount of Gib",
                                "example": 64
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Suggested Instance Type Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "0bb5db74-2457-4a34-b8f3-174e6bf5578e",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/instanceTypeRecommendation",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-06-19T08:41:57.516Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:instanceTypeRecommendation",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "example": [
                                  {
                                    "instanceType": "m4.large"
                                  },
                                  {
                                    "instanceType": "m5.large"
                                  }
                                ]
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 2,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/instance/interruption": {
      "post": {
        "summary": "Simulate an Instance Interruption",
        "description": "The simulate instance interruption API is used for simulating a spot interruption in AWS, so that customers can verify specific applicative behaviors in case an interruption takes place. Once the interruption api is called, instances posted in the API body will be terminated in AWS, thus mocking a spot interruption.",
        "operationId": "elastigroupAwsInstanceInterruption",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "instancesToInterrupt": {
                        "type": "array",
                        "description": "A list of group's instance ids to interrupt\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "i-123456",
                          "i-9876543"
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Simulate An Instance Interruption",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "ff3e1e5b-91b8-42fa-8267-b988efc7f662",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/instance/interruption?accountId=act-4fb595c6",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2015-06-29T13:01:55.060Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/instance/signal": {
      "post": {
        "summary": "Create Instance Signal",
        "description": "The instance signal API is used for notifying Spot about the instance state, so Spot can act accordingly. Supported signals are - INSTANCE_READY – Whenever this signal is sent, Spot will register the instance to the ELB INSTANCE_READY_TO_SHUTDOWN – Whenever this signal is sent, Spot will terminate the instance after it was marked for termination. Important - You need to define the expected signals for your Elastigroup in the group configuration.",
        "operationId": "elastigroupAwsCreateInstanceSignal",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "instanceId": {
                        "type": "string",
                        "example": "i-123456",
                        "description": "The instance ID the signal refers to."
                      },
                      "signal": {
                        "type": "string",
                        "example": "INSTANCE_READY",
                        "description": "The specific signal you want to trigger. Valid Values - INSTANCE_READY, INSTANCE_READY_TO_SHUTDOWN"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create Instance Signal Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "67582d0c-108b-4ef7-9fdc-d39678a30844",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/instance/signal",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-01-07T07:30:58.622Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                },
                                "kind": {
                                  "type": "string",
                                  "example": "spotinst:aws:ec2:instance:signal",
                                  "description": "The data type of each item in the response\n"
                                },
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "instanceId": {
                                      "type": "string",
                                      "example": "i-0c8bc7fd0e8cd6c8d",
                                      "description": "The instance ID the signal refers to.\n"
                                    },
                                    "instanceLaunchedAt": {
                                      "type": "string",
                                      "example": "2023-04-30T12:20:14.000Z",
                                      "description": "The time the instance was launched (returned only for signals of type INSTANCE_READY).\n"
                                    },
                                    "instanceDetachedAt": {
                                      "type": "string",
                                      "example": "2023-04-30T12:20:14.000Z",
                                      "description": "The time the instance was detached (returned only for signals of type INSTANCE_READY_TO_SHUTDOWN).\n"
                                    },
                                    "type": {
                                      "type": "string",
                                      "example": "INSTANCE_READY",
                                      "description": "The type of signal sent in the request.\n"
                                    },
                                    "signalExpiresAt": {
                                      "type": "string",
                                      "example": "2023-04-30T12:21:14.000Z",
                                      "description": "The time at which the signal expires.\n"
                                    },
                                    "message": {
                                      "type": "string",
                                      "example": "This instance crossed the signal timeout limit at Sun Apr 30 12:21:14 UTC 2023",
                                      "description": "An optional message that may contain additional information.\n"
                                    }
                                  }
                                },
                                "count": {
                                  "type": "integer",
                                  "example": 1
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/instance/{instanceId}/standby/enter": {
      "post": {
        "summary": "Instance Standby",
        "description": "Instance Standby enables you to put an instance in Standby state , update or troubleshoot the instance, and then return the instance to service. Instances that are on standby are still part of the Elastigroup, but they don't get application traffic.\nWhenever instance is standby state -\nIt will be de-registered from all the ELBs / ALBs in the Elastigroup It won't be affected from Scale down activities in the Elastigroup The instance health won't be checked, and it won't be replaced When the instance exits the Standby state -\nThe instance will be register back to all the ELBs / ALBs that are defined in the Elastigroup It will be considered and affected from all the Elastigroup activities (helth checks, scaling, etc.)",
        "operationId": "elastigroupAwsInstanceStandBy",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "instanceId",
            "example": "i-123456",
            "description": "The instance ID you want to put in standby state\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Instance Standby Responce",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "ff3e1e5b-91b8-42fa-8267-b988efc7f662",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/instance/i-123456/standby/enter",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2015-06-29T13:01:55.060Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/instance/{instanceId}/standby/exit": {
      "post": {
        "summary": "Exit Instance Standby",
        "description": "Exit standby by mode",
        "operationId": "elastigroupAwsInstanceExitStandBy",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "instanceId",
            "example": "i-123456",
            "description": "The instance ID you want to put in standby state\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Exit Instance Standby Responce",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "ff3e1e5b-91b8-42fa-8267-b988efc7f662",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/instance/i-123456/standby/exit",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2015-06-29T13:01:55.060Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/roll": {
      "get": {
        "summary": "Group's Deployments Status",
        "description": "Get list of all the deployments of a specific Elastigroup and their status",
        "operationId": "elastigroupAwsDeploymentsStatus",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "limit",
            "example": "5",
            "description": "Limits results\n",
            "schema": {
              "type": "integer"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "sort",
            "example": "createdAt:ASC",
            "description": "Field to sort by the results Default: createdAt:DESC\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Group's Deployments Status Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/roll?limit=5&sort=createdAt%3ADESC",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-01-21T17:12:51.451Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group:roll",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "title": "ID",
                                        "example": "sbgd-781c6212"
                                      },
                                      "status": {
                                        "type": "string",
                                        "title": "Status",
                                        "example": "starting"
                                      },
                                      "progress": {
                                        "type": "object",
                                        "properties": {
                                          "unit": {
                                            "type": "string",
                                            "title": "Unit",
                                            "example": "percent"
                                          },
                                          "value": {
                                            "type": "integer",
                                            "title": "Value",
                                            "example": 0
                                          }
                                        }
                                      },
                                      "currentBatch": {
                                        "type": "integer",
                                        "title": "Current Batch",
                                        "example": 1
                                      },
                                      "numOfBatches": {
                                        "type": "integer",
                                        "title": "Number of Batches",
                                        "example": 4
                                      },
                                      "gracePeriod": {
                                        "type": "integer",
                                        "title": "Grace Period",
                                        "example": 900
                                      },
                                      "blueInstances": {
                                        "type": "integer",
                                        "title": "Blue Instances",
                                        "example": 4
                                      },
                                      "greenInstances": {
                                        "type": "integer",
                                        "title": "Green Instances",
                                        "example": 1
                                      },
                                      "createdAt": {
                                        "type": "string",
                                        "title": "Created At",
                                        "example": "2018-03-27T19:50:12.000+0000"
                                      },
                                      "updatedAt": {
                                        "type": "string",
                                        "title": "Updated At",
                                        "example": "2018-03-27T19:50:16.000+0000"
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "title": "spotinst:aws:ec2:group:roll",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "title": "ID",
                                        "example": "sbgd-3f127ed0"
                                      },
                                      "status": {
                                        "type": "string",
                                        "title": "Status",
                                        "example": "starting"
                                      },
                                      "progress": {
                                        "type": "object",
                                        "properties": {
                                          "unit": {
                                            "type": "string",
                                            "title": "Unit",
                                            "example": "percent"
                                          },
                                          "value": {
                                            "type": "integer",
                                            "title": "Value",
                                            "example": 0
                                          }
                                        }
                                      },
                                      "currentBatch": {
                                        "type": "integer",
                                        "title": "Current Batch",
                                        "example": 1
                                      },
                                      "numOfBatches": {
                                        "type": "integer",
                                        "title": "Number of Batches",
                                        "example": 4
                                      },
                                      "gracePeriod": {
                                        "type": "integer",
                                        "title": "Grace Period",
                                        "example": 900
                                      },
                                      "blueInstances": {
                                        "type": "integer",
                                        "title": "Blue Instances",
                                        "example": 4
                                      },
                                      "greenInstances": {
                                        "type": "integer",
                                        "title": "Green Instances",
                                        "example": 1
                                      },
                                      "createdAt": {
                                        "type": "string",
                                        "title": "Created At",
                                        "example": "2018-03-27T19:46:22.000+0000"
                                      },
                                      "updatedAt": {
                                        "type": "string",
                                        "title": "Updated At",
                                        "example": "2018-03-27T19:46:35.000+0000"
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "title": "ID",
                                        "example": "sbgd-3ee19606"
                                      },
                                      "status": {
                                        "type": "string",
                                        "title": "Status",
                                        "example": "stopped"
                                      },
                                      "progress": {
                                        "type": "object",
                                        "properties": {
                                          "unit": {
                                            "type": "string",
                                            "title": "Unit",
                                            "example": "percent"
                                          },
                                          "value": {
                                            "type": "integer",
                                            "title": "Value",
                                            "example": 0
                                          }
                                        }
                                      },
                                      "currentBatch": {
                                        "type": "integer",
                                        "title": "Current Batch",
                                        "example": 1
                                      },
                                      "numOfBatches": {
                                        "type": "integer",
                                        "title": "Number of Batches",
                                        "example": 4
                                      },
                                      "gracePeriod": {
                                        "type": "integer",
                                        "title": "Grace Period",
                                        "example": 900
                                      },
                                      "blueInstances": {
                                        "type": "integer",
                                        "title": "Blue Instances",
                                        "example": 4
                                      },
                                      "greenInstances": {
                                        "type": "integer",
                                        "title": "Green Instances",
                                        "example": 1
                                      },
                                      "createdAt": {
                                        "type": "string",
                                        "title": "Created At",
                                        "example": "2018-03-27T19:35:41.000+0000"
                                      },
                                      "updatedAt": {
                                        "type": "string",
                                        "title": "Updated At",
                                        "example": "2018-03-27T19:39:18.000+0000"
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "title": "ID",
                                        "example": "sbgd-cc4c44e2"
                                      },
                                      "status": {
                                        "type": "string",
                                        "title": "Status",
                                        "example": "finished"
                                      },
                                      "progress": {
                                        "type": "object",
                                        "properties": {
                                          "unit": {
                                            "type": "string",
                                            "title": "Unit",
                                            "example": "percent"
                                          },
                                          "value": {
                                            "type": "integer",
                                            "title": "Value",
                                            "example": 100
                                          }
                                        }
                                      },
                                      "currentBatch": {
                                        "type": "integer",
                                        "title": "Current Batch",
                                        "example": 1
                                      },
                                      "numOfBatches": {
                                        "type": "integer",
                                        "title": "Number of Batches",
                                        "example": 4
                                      },
                                      "gracePeriod": {
                                        "type": "integer",
                                        "title": "Grace Period",
                                        "example": 900
                                      },
                                      "blueInstances": {
                                        "type": "integer",
                                        "title": "Blue Instances",
                                        "example": 4
                                      },
                                      "greenInstances": {
                                        "type": "integer",
                                        "title": "Green Instances",
                                        "example": 1
                                      },
                                      "createdAt": {
                                        "type": "string",
                                        "title": "Created At",
                                        "example": "2018-03-26T19:22:45.000+0000"
                                      },
                                      "updatedAt": {
                                        "type": "string",
                                        "title": "Updated At",
                                        "example": "2018-03-26T19:26:17.000+0000"
                                      }
                                    }
                                  }
                                ]
                              },
                              "example": [
                                {
                                  "id": "sbgd-781c6212",
                                  "status": "starting",
                                  "progress": {
                                    "unit": "percent",
                                    "value": 0
                                  },
                                  "currentBatch": "1,",
                                  "numOfBatches": 4,
                                  "gracePeriod": 900,
                                  "blueInstances": 4,
                                  "greenInstances": 1,
                                  "createdAt": "2018-03-27T19:50:12.000+0000",
                                  "updatedAt": "2018-03-27T19:50:16.000+0000"
                                },
                                {
                                  "id": "sbgd-3ee19606",
                                  "status": "stopped",
                                  "progress": {
                                    "unit": "percent",
                                    "value": 0
                                  },
                                  "currentBatch": "1,",
                                  "numOfBatches": 4,
                                  "gracePeriod": 900,
                                  "blueInstances": 4,
                                  "greenInstances": 1,
                                  "createdAt": "2018-03-27T19:35:41.000+0000",
                                  "updatedAt": "2018-03-27T19:39:18.000+0000"
                                },
                                {
                                  "id": "sbgd-cc4c44e2",
                                  "status": "finished",
                                  "progress": {
                                    "unit": "percent",
                                    "value": 100
                                  },
                                  "currentBatch": "1,",
                                  "numOfBatches": 4,
                                  "gracePeriod": 900,
                                  "blueInstances": 4,
                                  "greenInstances": 1,
                                  "createdAt": "2018-03-26T19:22:45.000+0000",
                                  "updatedAt": "2018-03-26T19:26:17.000+0000"
                                },
                                {
                                  "id": "sbgd-3f127ed0",
                                  "status": "starting",
                                  "progress": {
                                    "unit": "percent",
                                    "value": 0
                                  },
                                  "currentBatch": "1,",
                                  "numOfBatches": 4,
                                  "gracePeriod": 900,
                                  "blueInstances": 4,
                                  "greenInstances": 1,
                                  "createdAt": "2018-03-27T19:46:22.000+0000",
                                  "updatedAt": "2018-03-27T19:46:35.000+0000"
                                }
                              ]
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Start Deployment",
        "description": "Deploy your Elastigroup (triggers Blue/Green Deployment that replaces the existing instances in the Elastigroup)",
        "operationId": "elastigroupAwsDeploy",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "batchSizePercentage",
                      "gracePeriod"
                    ],
                    "properties": {
                      "batchSizePercentage": {
                        "type": "integer",
                        "example": 20,
                        "description": "Indicates (in percentage) the batch size of the deployment (meaning, how many instances to replace in each batch)\n"
                      },
                      "gracePeriod": {
                        "type": "integer",
                        "example": 300,
                        "description": "Indicates (in seconds) the timeout to wait until instance become healthy based on the healthCheckType\n"
                      },
                      "healthCheckType": {
                        "type": "string",
                        "example": "EC2",
                        "description": "Define a health check type.\\\nIf no value is set the roll will use the group’s auto-healing health check.\n",
                        "enum": [
                          "ELB",
                          "ECS_CLUSTER_INSTANCE",
                          "TARGET_GROUP",
                          "OPSWORKS",
                          "NOMAD_NODE",
                          "HCS",
                          "EC2",
                          "NONE"
                        ]
                      },
                      "drainingTimeout": {
                        "type": "integer",
                        "default": 120,
                        "example": 60,
                        "description": "Indicates (in seconds) the timeout to drain the instances. Override the group value.\n",
                        "minimum": 0
                      },
                      "strategy": {
                        "description": "The roll strategy\n",
                        "properties": {
                          "action": {
                            "type": "string",
                            "default": "REPLACE_SERVER",
                            "example": "REPLACE_SERVER",
                            "description": "The roll action to perform.\n",
                            "enum": [
                              "REPLACE_SERVER",
                              "RESTART_SERVER"
                            ]
                          },
                          "batchMinHealthyPercentage": {
                            "type": "integer",
                            "default": 50,
                            "example": 25,
                            "description": "Indicates the threshold of minimum healthy instances in single batch.\\\nIf the amount of healthy instances in single batch is under the threshold, the deployment will fail.\\\nIn case of null as value, the default value in the backend will be 50%.\\\nValue of param should represent the number in percentage (%) of the batch.\n",
                            "minimum": 0,
                            "maximum": 100
                          },
                          "onFailure": {
                            "type": "object",
                            "required": [
                              "actionType"
                            ],
                            "description": "Set detach options to the deployment\n",
                            "properties": {
                              "actionType": {
                                "type": "string",
                                "example": "DETACH_NEW",
                                "description": "Sets the action that will take place.\n",
                                "enum": [
                                  "DETACH_OLD",
                                  "DETACH_NEW"
                                ]
                              },
                              "shouldHandleAllBatches": {
                                "type": "boolean",
                                "default": false,
                                "example": true,
                                "description": "Indicator if the action should apply to all batches of the deployment or only the latest batch\n"
                              },
                              "drainingTimeout": {
                                "type": "integer",
                                "default": "The Elastigroups draining time out",
                                "example": 120,
                                "description": "Indicates (in seconds) the timeout to drain the instances\n"
                              },
                              "shouldDecrementTargetCapacity": {
                                "type": "boolean",
                                "default": true,
                                "example": true,
                                "description": "Decrementing the group target capacity after detaching the instances\n"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deploy Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/roll?accountId=act-123456",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "PUT",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-01-21T17:12:51.451Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group:roll",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "title": "ID",
                                    "example": "sbgd-3ee19606"
                                  },
                                  "status": {
                                    "type": "string",
                                    "title": "Status",
                                    "example": "STARTING"
                                  },
                                  "currentBatch": {
                                    "type": "integer",
                                    "title": "Status",
                                    "example": 1
                                  },
                                  "numOfBatches": {
                                    "type": "integer",
                                    "title": "Status",
                                    "example": 1
                                  },
                                  "progress": {
                                    "type": "object",
                                    "properties": {
                                      "unit": {
                                        "type": "string",
                                        "title": "Unit",
                                        "example": "percent"
                                      },
                                      "value": {
                                        "type": "integer",
                                        "title": "Value",
                                        "example": 0
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/roll/{rollId}": {
      "put": {
        "summary": "Stop Deployment",
        "description": "Stop an existing deployment",
        "operationId": "elastigroupAwsStopDeployment",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "path",
            "name": "rollId",
            "example": "sbgd-9876",
            "description": "The deployment ID you want to stop\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "roll": {
                        "type": "object",
                        "title": "Role",
                        "properties": {
                          "status": {
                            "type": "string",
                            "title": "Status",
                            "example": "STOPPED",
                            "description": "Set the status of the group to `STOPPED\"\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Stop Deployment Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "ff3e1e5b-91b8-42fa-8267-b988efc7f662",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-12345/roll/sbgd-dfb956b4",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "PUT",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2015-06-29T13:01:55.060Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group:roll",
                              "description": "The data type of each item in the response\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/roll/{rollId}/status": {
      "get": {
        "summary": "Deployment Status",
        "description": "Get status of a specific deployment",
        "operationId": "elastigroupAwsDeployStatus",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "path",
            "name": "rollId",
            "example": "sbgd-9876",
            "description": "The deployment ID you want to query\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Deploy Status Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-d8489594/deployment/sbgd-3e158755/status?spotinstAccountId=act-d48178ad",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-01-21T17:12:51.451Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group:roll:status",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:aws:ec2:group:roll:status",
                                "properties": {
                                  "progress": {
                                    "type": "object",
                                    "properties": {
                                      "unit": {
                                        "type": "string",
                                        "title": "Unit",
                                        "example": "percent"
                                      },
                                      "value": {
                                        "type": "integer",
                                        "title": "Value",
                                        "example": 50
                                      }
                                    }
                                  },
                                  "numberOfBatches": {
                                    "type": "integer",
                                    "title": "Number Of Batches",
                                    "example": 2
                                  },
                                  "currentBatch": {
                                    "type": "integer",
                                    "title": "Current Batch",
                                    "example": 1
                                  },
                                  "gracePeriod": {
                                    "type": "integer",
                                    "title": "Grace Period",
                                    "example": 600
                                  },
                                  "strategyAction": {
                                    "type": "string",
                                    "title": "Strategy Action",
                                    "example": "REPLACE_SERVER"
                                  },
                                  "healthCheck": {
                                    "type": "string",
                                    "title": "Strategy Action",
                                    "example": "NONE"
                                  },
                                  "instances": {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "object",
                                          "properties": {
                                            "blue": {
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "properties": {
                                                  "instanceId": {
                                                    "type": "string",
                                                    "example": "i-0b3f1234567890ae5"
                                                  },
                                                  "lifeCycle": {
                                                    "type": "string",
                                                    "example": "spot"
                                                  },
                                                  "batchNum": {
                                                    "type": "integer",
                                                    "example": 1
                                                  },
                                                  "status": {
                                                    "type": "string",
                                                    "example": "RUNNING"
                                                  }
                                                }
                                              }
                                            },
                                            "green": {
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "properties": {
                                                  "instanceId": {
                                                    "type": "string",
                                                    "example": "i-0b3f1234567890dd5"
                                                  },
                                                  "lifeCycle": {
                                                    "type": "string",
                                                    "example": "spot"
                                                  },
                                                  "batchNum": {
                                                    "type": "integer",
                                                    "example": 1
                                                  },
                                                  "status": {
                                                    "type": "string",
                                                    "example": "RUNNING"
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "blue": {
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "properties": {
                                                  "instanceId": {
                                                    "type": "string",
                                                    "example": "i-0b3f1234567890aa6"
                                                  },
                                                  "lifeCycle": {
                                                    "type": "string",
                                                    "example": "spot"
                                                  },
                                                  "batchNum": {
                                                    "type": "integer",
                                                    "example": 2
                                                  },
                                                  "status": {
                                                    "type": "string",
                                                    "example": "DETACHED"
                                                  }
                                                }
                                              }
                                            },
                                            "green": {
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "properties": {
                                                  "instanceId": {
                                                    "type": "string",
                                                    "example": "i-0b3f1234567890dq3"
                                                  },
                                                  "lifeCycle": {
                                                    "type": "string",
                                                    "example": "spot"
                                                  },
                                                  "batchNum": {
                                                    "type": "integer",
                                                    "example": 2
                                                  },
                                                  "status": {
                                                    "type": "string",
                                                    "example": "RUNNING"
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      ]
                                    }
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/roll/{rollId}/action": {
      "post": {
        "summary": "Deployment Actions",
        "description": "Apply a Detach action to a deployment",
        "operationId": "elastigroupAwsDeployment",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "path",
            "name": "rollId",
            "example": "sbgd-9876",
            "description": "The deployment ID to call the action on\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "spotinst:aws:ec2:group:roll:action",
                    "properties": {
                      "actionType": {
                        "type": "string",
                        "title": "Type of action",
                        "description": "Sets the action that will take place, Accepted values are: DETACH_OLD, DETACH_NEW\n",
                        "example": "DETACH_NEW"
                      },
                      "shouldHandleAllBatches": {
                        "type": "boolean",
                        "title": "Should Hnadle All Batches Criteria",
                        "example": true,
                        "default": false,
                        "description": "Indicator if the action should apply to all batches of the deployment or only the latest batch\n"
                      },
                      "drainingTimeout": {
                        "type": "integer",
                        "title": "Draining timeout criteria",
                        "description": "Indicates (in seconds) the timeout to wait until instance are detached\n",
                        "example": 200
                      },
                      "shouldDecrementTargetCapacity": {
                        "type": "boolean",
                        "title": "Should Decrement Target Capacity criteria",
                        "example": true,
                        "default": true
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Deployment Actions Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/group/sig-1b656b92/roll/sbgd-aafb7671/action",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-01-21T17:12:51.451Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group:roll:action",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "groupId": {
                                    "type": "string",
                                    "description": "Group ID",
                                    "example": "sig-1b656b92"
                                  },
                                  "rollId": {
                                    "type": "string",
                                    "description": "Roll ID",
                                    "example": "sbgd-aafb7671"
                                  },
                                  "actionType": {
                                    "type": "string",
                                    "description": "Roll ID",
                                    "example": "DETACH_NEW"
                                  },
                                  "detachedInstances": {
                                    "type": "string",
                                    "example": [
                                      "i-0b6974ad592f8d9ba"
                                    ]
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/costs": {
      "get": {
        "summary": "Get Costs Per Account",
        "description": "Get costs per time filter.\n",
        "operationId": "azureCostsPerAccount",
        "tags": [
          "Elastigroup Azure Scale Set VMs"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123456789",
            "description": "The ID of the account associated with your token.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "fromDate",
            "required": true,
            "description": "Get items on or after this date (ISO 8601 or Unix timestamp)\n",
            "schema": {
              "type": "string"
            },
            "example": "2020-09-01 or fromDate=1598918400000"
          },
          {
            "in": "query",
            "name": "toDate",
            "required": true,
            "description": "Get items on or before this date (ISO 8601 or Unix timestamp)",
            "schema": {
              "type": "string"
            },
            "example": "2020-09-01 or fromDate=1598918400000"
          }
        ],
        "responses": {
          "200": {
            "description": "Costs Per Account Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "67582d0c-108b-4ef7-9fdc-d39678a30844"
                            },
                            "url": {
                              "type": "string",
                              "example": "/azure/costs"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-01-07T07:30:58.622Z"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:azure:costs"
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "spotinst:azure:costs",
                                "properties": {
                                  "lowPriority": {
                                    "type": "object",
                                    "properties": {
                                      "runningHours": {
                                        "type": "number",
                                        "format": "number",
                                        "example": 1470.8
                                      },
                                      "actualCosts": {
                                        "type": "number",
                                        "format": "number",
                                        "example": 107.3
                                      },
                                      "potentialCosts": {
                                        "type": "number",
                                        "format": "number",
                                        "example": 378.41
                                      },
                                      "savingsPercentage": {
                                        "type": "number",
                                        "format": "number",
                                        "example": 71.64
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}": {
      "put": {
        "summary": "Update Elastigroup",
        "description": "Update an Azure Elastigroup cluster.\n",
        "operationId": "elastigroupAzureSpotVmsUpdate",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "groupId",
            "example": "sig-123123",
            "description": "Elastigroup's ID\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Update Elasitgroup Azure Spot VMs - Request Available fields",
                    "required": [
                      "group"
                    ],
                    "properties": {
                      "group": {
                        "type": "object",
                        "title": "Azure Elastigroup",
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "spotinst-group",
                            "description": "Azure Elastigroup Name\n"
                          },
                          "description": {
                            "type": "string",
                            "example": "This is my example elastigroup",
                            "description": "Describe your Azure Elastigroup\n"
                          },
                          "capacity": {
                            "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D~1capacity/put/requestBody/content/application~1json/schema/allOf/0/properties/capacity"
                          },
                          "strategy": {
                            "type": "object",
                            "title": "Elastigroup Strategy",
                            "description": "Strategy for Elastigroup.\n",
                            "properties": {
                              "shouldUtilizeCommitments": {
                                "type": "boolean",
                                "description": "Determines whether to utilize any existing Azure Savings Plans or Reserved Instances associated with the subscription for On-Demand VMs.\n",
                                "example": true,
                                "default": false
                              },
                              "spotPercentage": {
                                "type": "integer",
                                "example": 50,
                                "default": 100,
                                "description": "Percentage of Spot-VMs to maintain.\\\nRequired if odCount isn't specified.\n"
                              },
                              "onDemandCount": {
                                "type": "integer",
                                "description": "Percentage of Spot-VMs to maintain.\\\nRequired if spotPercentage isn't specified.\n",
                                "writeOnly": true
                              },
                              "drainingTimeout": {
                                "type": "integer",
                                "example": 30,
                                "default": 120,
                                "description": "Time (in seconds) to allow the VM be drained from incoming TCP connections and detached from MLB before terminating it during a scale down operation.\n"
                              },
                              "fallbackToOd": {
                                "type": "boolean",
                                "description": "In case of no spots available, Elastigroup will launch an On-demand instance instead\n",
                                "example": true
                              },
                              "revertToSpot": {
                                "description": "Hold settings for strategy correction - replacing On-Demand for Spot VMs\n",
                                "type": "object",
                                "properties": {
                                  "performAt": {
                                    "type": "string",
                                    "description": "Settings for maintenance strategy.\n",
                                    "enum": [
                                      "timeWindow",
                                      "never",
                                      "always"
                                    ],
                                    "example": "timeWindow",
                                    "default": "always"
                                  }
                                }
                              },
                              "optimizationWindows": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "valid format: \"ddd:hh:mm-ddd:hh:mm (day:hour(0-23):minute(0-59))\", not empty if revertToSpot.performAt = timeWindow\n",
                                "example": [
                                  "Mon:03:00-Wed:02:30"
                                ]
                              },
                              "signals": {
                                "type": "array",
                                "description": "The signals defined for this group.\n",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "The type of the signal defined for the group.\n",
                                      "enum": [
                                        "vmReady",
                                        "vmReadyToShutdown"
                                      ],
                                      "example": "vmReady"
                                    },
                                    "timeout": {
                                      "type": "integer",
                                      "description": "The timeout in seconds to hold the vm until a signal is sent.\\\nIf no signal is sent the vm will be replaced (vmReady) or we will terminate the vm (vmReadyToShutdown) after the timeout.\n",
                                      "example": 180,
                                      "default": 1800,
                                      "minimum": 60,
                                      "maximum": 1800
                                    }
                                  }
                                }
                              },
                              "availabilityVsCost": {
                                "title": "Elastigroup Availability VS Cost",
                                "description": "Set the desired preference for the Spot market VM selection. (100-  Availability, 0- cost)\n",
                                "type": "integer",
                                "example": 100
                              },
                              "capacityReservation": {
                                "type": "object",
                                "description": "On-demand Capacity Reservation group enables you to reserve Compute capacity in an Azure region or an Availability Zone for any duration of time.\n[CRG can only be created on the Azure end.](https://learn.microsoft.com/en-us/azure/virtual-machines/capacity-reservation-create)\n",
                                "required": [
                                  "shouldUtilize",
                                  "utilizationStrategy"
                                ],
                                "properties": {
                                  "shouldUtilize": {
                                    "type": "boolean",
                                    "description": "Determines whether capacity reservations should be utilized.\n",
                                    "example": true
                                  },
                                  "utilizationStrategy": {
                                    "type": "string",
                                    "description": "The priority requested for using CRG. This value will determine if CRG is used ahead of spot VMs or On-demand VMs.\n* utilizeOverOD- If picked, we will use CRG only in case On-demand should be launched.\n* utilizeOverSpot-  CRG will be preferred over Spot. Only after CRG is fully used, spot VMs can be used.\n",
                                    "enum": [
                                      "utilizeOverSpot",
                                      "utilizeOverOD"
                                    ],
                                    "example": "utilizeOverSpot"
                                  },
                                  "capacityReservationGroups": {
                                    "type": "array",
                                    "description": "List of the desired CRGs to use under the associated Azure subscription.\nWhen null we will utilize any available reservation that matches the Virtual Node Group.\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "resourceGroupName"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "The name of the CRG.\n",
                                          "example": "capacityReservationGroupName"
                                        },
                                        "resourceGroupName": {
                                          "type": "string",
                                          "description": "Azure resource group name\n",
                                          "example": "resourceGroupName"
                                        },
                                        "shouldPrioritize": {
                                          "type": "boolean",
                                          "description": "The desired CRG to utilize ahead of other CRGs in the subscription.\n",
                                          "example": true
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "scaling": {
                            "type": "object",
                            "title": "Elastigroup Scaling",
                            "description": "Scaling Policies for Elastigroup.\n",
                            "properties": {
                              "up": {
                                "type": "array",
                                "description": "Defines scaling up policy.\n",
                                "items": {
                                  "allOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "isEnabled": {
                                          "type": "boolean",
                                          "example": "true",
                                          "description": "Specifies whether the scaling policy is enabled.\n",
                                          "default": true
                                        },
                                        "policyName": {
                                          "type": "string",
                                          "description": "Name of scaling policy.\n",
                                          "example": "cpuScale"
                                        },
                                        "metricName": {
                                          "type": "string",
                                          "description": "Metric to monitor by Azure metric display name\n",
                                          "example": "Percentage CPU"
                                        },
                                        "statistic": {
                                          "type": "string",
                                          "description": "Statistic by which to evaluate the selected metric.\n",
                                          "example": "average",
                                          "enum": [
                                            "average",
                                            "total",
                                            "minimum",
                                            "maximum",
                                            "count"
                                          ]
                                        },
                                        "unit": {
                                          "type": "string",
                                          "description": "Unit to measure to evaluate the selected metric\n",
                                          "enum": [
                                            "percent",
                                            "seconds",
                                            "microseconds",
                                            "milliseconds",
                                            "bytes",
                                            "kilobytes",
                                            "megabytes",
                                            "gigabytes",
                                            "terabytes",
                                            "bits",
                                            "kilobits",
                                            "megabits",
                                            "gigabits",
                                            "terabits",
                                            "count",
                                            "bytes/second",
                                            "kilobytes/second",
                                            "megabytes/second",
                                            "gigabytes/second",
                                            "terabytes/second",
                                            "bits/second",
                                            "kilobits/second",
                                            "megabits/second",
                                            "gigabits/second",
                                            "terabits/second",
                                            "count/second",
                                            "none"
                                          ]
                                        },
                                        "threshold": {
                                          "type": "number",
                                          "format": "float",
                                          "description": "The value at which the scaling action is triggered.\n",
                                          "example": 0.75
                                        },
                                        "namespace": {
                                          "type": "string",
                                          "description": "Should be one of the namespaces:\n* Microsoft.AnalysisServices/servers\n* Microsoft.ApiManagement/service\n* Microsoft.Automation/automationAccounts\n* Microsoft.Batch/batchAccounts\n* Microsoft.Cache/redis\n* Microsoft.Compute\n* Microsoft.CognitiveServices/accounts\n* Microsoft.ContainerInstance/containerGroups\n* Microsoft.ContainerService/managedClusters\n* Microsoft.CustomerInsights/hubs\n* Microsoft.DataFactory/datafactories\n* Microsoft.DataFactory/factories\n* Microsoft.DataLakeAnalytics/accounts\n* Microsoft.DataLakeStore/accounts\n* Microsoft.DBforMariaDB/servers\n* Microsoft.DBforMySQL/servers\n* Microsoft.DBforPostgreSQL/servers\n* Microsoft.Devices/IotHubs\n* Microsoft.Devices/provisioningServices\n* Microsoft.DocumentDB/databaseAccounts\n* Microsoft.EventGrid/topics\n* Microsoft.EventGrid/eventSubscriptions\n* Microsoft.EventGrid/extensionTopics\n* Microsoft.EventHub/namespaces\n* Microsoft.EventHub/clusters\n* Microsoft.HDInsight/clusters\n* Microsoft.Insights/AutoscaleSettings\n* Microsoft.Insights/Components\n* Microsoft.KeyVault/vaults\n* Microsoft.Kusto/Clusters\n* Microsoft.LocationBasedServices/accounts\n* Microsoft.Logic/workflows\n* Microsoft.NetApp/netAppAccounts/capacityPools/Volumes\n* Microsoft.NetApp/netAppAccounts/capacityPools\n* Microsoft.Network/networkInterfaces\n* Microsoft.Network/loadBalancers\n* Microsoft.Network/dnszones\n* Microsoft.Network/publicIPAddresses\n* Microsoft.Network/applicationGateways\n* Microsoft.Network/virtualNetworkGateways\n* Microsoft.Network/expressRouteCircuits\n* Microsoft.Network/expressRouteCircuits/peerings\n* Microsoft.Network/connections\n* Microsoft.Network/trafficManagerProfiles\n* Microsoft.Network/networkWatchers/connectionMonitors\n* Microsoft.Network/frontdoors\n* Microsoft.NotificationHubs/Namespaces/NotificationHubs\n* Microsoft.OperationalInsights/workspaces\n* Microsoft.PowerBIDedicated/capacities\n* Microsoft.Relay/namespaces\n* Microsoft.Search/searchServices\n* Microsoft.ServiceBus/namespaces\n* Microsoft.SignalRService/SignalR\n* Microsoft.Sql/servers/databases\n* Microsoft.Sql/servers/elasticPools\n* Microsoft.Sql/managedInstances\n* Microsoft.Storage/storageAccounts\n* Microsoft.Storage/storageAccounts/blobServices\n* Microsoft.Storage/storageAccounts/fileServices\n* Microsoft.Storage/storageAccounts/queueServices\n* Microsoft.Storage/storageAccounts/tableServices\n* Microsoft.StreamAnalytics/streamingjobs\n* Microsoft.TimeSeriesInsights/environments\n* Microsoft.TimeSeriesInsights/environments/eventsources\n* Microsoft.Web/serverfarms\n* Microsoft.Web/sites (excluding functions)\n* Microsoft.Web/sites (functions)\n* Microsoft.Web/sites/slots\n* Microsoft.Web/hostingEnvironments/multiRolePools\n* Microsoft.Web/hostingEnvironments/workerPools\n",
                                          "example": "Microsoft.Network/applicationGateways"
                                        },
                                        "period": {
                                          "type": "integer",
                                          "description": "Amount of time (seconds) for which the threshold must be met in order to trigger the scaling action.\n",
                                          "enum": [
                                            60,
                                            300,
                                            900,
                                            1800,
                                            3600,
                                            7200
                                          ],
                                          "example": 60
                                        },
                                        "evaluationPeriods": {
                                          "type": "integer",
                                          "description": "Number of consecutive periods in which the threshold must be met in order to trigger the scaling action.\n",
                                          "minimum": 1,
                                          "example": 3
                                        },
                                        "cooldown": {
                                          "type": "integer",
                                          "description": "Time (seconds) to wait after a scaling action before resuming monitoring.\\\nmultiple of 60.\n",
                                          "minimum": 0,
                                          "example": 300
                                        },
                                        "operator": {
                                          "type": "string",
                                          "description": "The operator used to evaluate the threshold against the current metric value.\\\nValid Values:\n* \"gt\" (Greater Than)\n* \"gte\" (Greater Than or Equal)\n* \"lt\" (Less Than)\n* \"lte\" (Less Than or Equal)\n",
                                          "example": "gte",
                                          "enum": [
                                            "gt",
                                            "gte",
                                            "lt",
                                            "lte"
                                          ]
                                        }
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "allOf": [
                                        {
                                          "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/scaling/properties/up/items/allOf/0"
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "policyName": {
                                              "example": "cpuScaleUp"
                                            },
                                            "threshold": {
                                              "example": 0.75
                                            },
                                            "operator": {
                                              "example": "gte"
                                            },
                                            "dimensions": {
                                              "type": "array",
                                              "description": "Required if scaling.up.namespace is different from \"Microsoft.Compute\".\\\n2 dimensions are required.\n",
                                              "items": {
                                                "type": "object",
                                                "properties": {
                                                  "name": {
                                                    "type": "string",
                                                    "description": "Azure resource group for the scaling.up.dimensions. Required if using namespace different from \"Microsoft.Compute\".\n",
                                                    "example": "resourceName"
                                                  },
                                                  "value": {
                                                    "type": "string",
                                                    "description": "Azure resource for the scaling.up.dimensions. Required if using namespace different from \"Microsoft.Compute\".\n",
                                                    "example": "testApplicationGateway"
                                                  }
                                                }
                                              },
                                              "example": [
                                                {
                                                  "name": "resourceName",
                                                  "value": "testApplicationGateway"
                                                },
                                                {
                                                  "name": "resourceGroupName",
                                                  "value": "testResourceGroup"
                                                }
                                              ]
                                            },
                                            "action": {
                                              "type": "object",
                                              "description": "The action to take when scale down is needed.\n",
                                              "oneOf": [
                                                {
                                                  "type": "object",
                                                  "title": "updateCapacity",
                                                  "properties": {
                                                    "type": {
                                                      "type": "string",
                                                      "description": "Type of scaling action to take when the scaling policy is triggered.\n",
                                                      "example": "updateCapacity",
                                                      "enum": [
                                                        "adjustment",
                                                        "updateCapacity"
                                                      ]
                                                    },
                                                    "target": {
                                                      "type": "integer",
                                                      "title": "Target",
                                                      "description": "Desired number of instances. Also you must indicate “minimum” and “maximum” amounts. Required if selected as action type:\n + updateCapacity\n",
                                                      "example": 1
                                                    },
                                                    "minimum": {
                                                      "type": "integer",
                                                      "title": "Minimum",
                                                      "description": "Lower limit of instances that you can scale up to. Also you must indicate “target” and “maximum” amounts. Required if selected as action type:\n+ updateCapacity\n",
                                                      "example": 1
                                                    },
                                                    "maximum": {
                                                      "type": "integer",
                                                      "title": "Maximum",
                                                      "description": "Upper limit of instances that you can scale up to. Also you must indicate “minimum” and “target” amounts. Required if selected as action type:\n+ updateCapacity\n",
                                                      "example": 1
                                                    }
                                                  }
                                                },
                                                {
                                                  "type": "object",
                                                  "title": "adjustment",
                                                  "properties": {
                                                    "type": {
                                                      "type": "string",
                                                      "description": "Type of scaling action to take when the scaling policy is triggered.\n",
                                                      "example": "adjustment",
                                                      "enum": [
                                                        "adjustment",
                                                        "updateCapacity"
                                                      ]
                                                    },
                                                    "adjustment": {
                                                      "title": "Adjustment",
                                                      "description": "Value to which the action type will be adjusted. Required if using the next action types:\n+ adjustment\n",
                                                      "type": "string",
                                                      "example": "2"
                                                    }
                                                  }
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      ]
                                    }
                                  ]
                                }
                              },
                              "down": {
                                "type": "array",
                                "description": "Defines scaling down policy.\n",
                                "items": {
                                  "allOf": [
                                    {
                                      "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/scaling/properties/up/items/allOf/0"
                                    },
                                    {
                                      "type": "object",
                                      "allOf": [
                                        {
                                          "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/scaling/properties/up/items/allOf/0"
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "policyName": {
                                              "type": "string",
                                              "example": "cpuScaleDown"
                                            },
                                            "threshold": {
                                              "type": "number",
                                              "example": 0.25
                                            },
                                            "operator": {
                                              "type": "string",
                                              "example": "lte"
                                            },
                                            "dimensions": {
                                              "type": "array",
                                              "description": "Required if scaling.down.namespace is different from \"Microsoft.Compute\".\\\n2 dimensions are required.\n",
                                              "items": {
                                                "type": "object",
                                                "properties": {
                                                  "name": {
                                                    "type": "string",
                                                    "description": "Azure resource group for the scaling.down.dimensions. Required if using namespace different from \"Microsoft.Compute\".\n",
                                                    "example": "resourceName"
                                                  },
                                                  "value": {
                                                    "type": "string",
                                                    "description": "Azure resource for the scaling.down.dimensions. Required if using namespace different from \"Microsoft.Compute\".\n",
                                                    "example": "testApplicationGateway"
                                                  }
                                                }
                                              },
                                              "example": [
                                                {
                                                  "name": "resourceName",
                                                  "value": "testApplicationGateway"
                                                },
                                                {
                                                  "name": "resourceGroupName",
                                                  "value": "testResourceGroup"
                                                }
                                              ]
                                            },
                                            "action": {
                                              "type": "object",
                                              "description": "The action to take when scale down is needed.\n",
                                              "oneOf": [
                                                {
                                                  "type": "object",
                                                  "title": "updateCapacity",
                                                  "properties": {
                                                    "type": {
                                                      "type": "string",
                                                      "description": "Type of scaling action to take when the scaling policy is triggered.\n",
                                                      "example": "updateCapacity",
                                                      "enum": [
                                                        "adjustment",
                                                        "updateCapacity"
                                                      ]
                                                    },
                                                    "target": {
                                                      "type": "integer",
                                                      "title": "Target",
                                                      "description": "The desired amount of instances. Must be defined along with the ‘minimum’ and ‘maximum’ amounts.\nRequired if selection as action type is:\n + updateCapacity\n",
                                                      "example": 1
                                                    },
                                                    "minimum": {
                                                      "type": "integer",
                                                      "title": "Minimum",
                                                      "description": "The lower limit of instances that you can scale down to. Must be defined along with the ‘maximum’ and ‘target’ amounts.\nRequired if selection as action type is:\n+ updateCapacity\n",
                                                      "example": 1
                                                    },
                                                    "maximum": {
                                                      "type": "integer",
                                                      "title": "Maximum",
                                                      "description": "The upper limit of instances that you can scale down to. Must be defined along with the ‘minimum’ and ‘target’ amounts.\nRequired if selection as action type is:\n+ updateCapacity\n",
                                                      "example": 1
                                                    }
                                                  }
                                                },
                                                {
                                                  "type": "object",
                                                  "title": "adjustment",
                                                  "properties": {
                                                    "type": {
                                                      "type": "string",
                                                      "description": "Type of scaling action to take when the scaling policy is triggered.\n",
                                                      "example": "adjustment",
                                                      "enum": [
                                                        "adjustment",
                                                        "updateCapacity"
                                                      ]
                                                    },
                                                    "adjustment": {
                                                      "title": "Adjustment",
                                                      "description": "Value to which the action type will be adjusted. Required if using the next action types:\n+ adjustment\n",
                                                      "type": "string",
                                                      "example": "2"
                                                    }
                                                  }
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      ]
                                    }
                                  ]
                                }
                              }
                            }
                          },
                          "compute": {
                            "type": "object",
                            "title": "Elastigroup Compute Update",
                            "description": "Compute settings for Elastigroup.\n",
                            "properties": {
                              "vmSizes": {
                                "type": "object",
                                "description": "amount of time to be unhealthy before a replacement is triggered\n",
                                "properties": {
                                  "odSizes": {
                                    "type": "array",
                                    "description": "Available On-Demand sizes.\n",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a1_v1"
                                    }
                                  },
                                  "spotSizes": {
                                    "type": "array",
                                    "description": "Available spot VM sizes.\n",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a2_v2"
                                    }
                                  },
                                  "preferredSpotSizes": {
                                    "type": "array",
                                    "description": "Prioritize Spot VM sizes when launching Spot VMs for the group.\n<a style=color:red>Must be a sublist of compute.vmSizes.spotSizes. </a>\n",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a2_v2"
                                    }
                                  },
                                  "spotSizeAttributes": {
                                    "$ref": "#/paths/~1azure~1compute~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/compute/properties/vmSizes/properties/spotSizeAttributes"
                                  },
                                  "excludedVmSizes": {
                                    "type": "array",
                                    "description": "Exclude these spot VM sizes when using attribute-based VM sizes.\n",
                                    "example": [
                                      "standard_a2_v2",
                                      "standard_d2s_v3"
                                    ],
                                    "items": {
                                      "type": "string"
                                    }
                                  }
                                }
                              },
                              "launchSpecification": {
                                "type": "object",
                                "properties": {
                                  "vmNamePrefix": {
                                    "type": "string",
                                    "description": "Set a VM name prefix to be used for all launched VMs and the VM resources.\n* The prefix value should comply with the following limitations: \n  *  A maximal length of 25 characters.\n  * The prefix can’t contain spaces, control characters, or these characters: ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } | ; : . ' \" , < > / ?\n  * The VM prefix can't end with a hyphen.\n",
                                    "example": "prefix"
                                  },
                                  "licenseType": {
                                    "type": "string",
                                    "description": "Enables Azure Hybrid Benefit.\nAccepted values: Windows_Client, Windows_Server, RHEL_BYOS, SLES_BYOS.\n",
                                    "example": "Windows_Server"
                                  },
                                  "customData": {
                                    "type": "string",
                                    "format": "byte",
                                    "description": "This value will hold the YML in base64 and will be added to the virtual machine.\n",
                                    "example": ""
                                  },
                                  "userData": {
                                    "type": "string",
                                    "description": "Define a set of scripts or other metadata that's inserted to an Azure virtual machine at provision time. (Base64 encoded)\n",
                                    "example": "IyEvYmluL2Jhc2gKZWNobyAidGVzdCI"
                                  },
                                  "image": {
                                    "title": "Image",
                                    "description": "Image of VM. An image is a template for creating new VMs. Choose from Azure image catalogue (marketplace) or use a custom image or chosen from shared gallery image.",
                                    "type": "object",
                                    "properties": {
                                      "marketplace": {
                                        "title": "Marketplace",
                                        "type": "object",
                                        "description": "Select an image from Azure's Marketplace image catalogue. Cannot be used with `custom` or `gallery`. <a style=color:red;>Required if custom or gallery image are not specified.</a>",
                                        "properties": {
                                          "publisher": {
                                            "title": "Publisher",
                                            "description": "Image publisher.  <a style=color:red;>Required if marketplace image is specified.</a>",
                                            "type": "string",
                                            "example": "OpenLogic"
                                          },
                                          "offer": {
                                            "title": "Offer",
                                            "description": "Name of image to use.  <a style=color:red;>Required if marketplace image is specified.</a>",
                                            "type": "string",
                                            "example": "CentOS"
                                          },
                                          "sku": {
                                            "title": "Stock Keeping Unit",
                                            "description": "Image's Stock Keeping Unit, which is the specific version of the image.  <a style=color:red;>Required if marketplace image is specified.</a>",
                                            "type": "string",
                                            "example": "7.3"
                                          },
                                          "version": {
                                            "title": "Version",
                                            "description": "Image's version. if version not provided we use 'latest'",
                                            "type": "string",
                                            "example": "7.3-1611",
                                            "default": "latest"
                                          }
                                        }
                                      },
                                      "custom": {
                                        "title": "Custom",
                                        "type": "object",
                                        "description": "Custom image to launch Elastigroup with. Cannot be used with `marketplace` or `gallery`. <a style=color:red;>Required if marketplace or gallery image are not specified.</a>",
                                        "properties": {
                                          "resourceGroupName": {
                                            "title": "Resource Group Name",
                                            "description": "Name of Resource Group for custom image.  <a style=color:red;>Required if custom image is specified.</a>",
                                            "type": "string",
                                            "example": "spotinst-azure"
                                          },
                                          "name": {
                                            "title": "Image Name",
                                            "description": "Name of the custom image.  <a style=color:red;>Required if custom image is specified.</a>",
                                            "type": "string",
                                            "example": "custom-image-name"
                                          }
                                        }
                                      },
                                      "gallery": {
                                        "title": "Gallery",
                                        "type": "object",
                                        "description": "Gallery image to launch Elastigroup with. Cannot be used with `marketplace` or `custom`. <a style=color:red;>Required if marketplace or custom image are not specified.</a>",
                                        "properties": {
                                          "resourceGroupName": {
                                            "title": "Resource Group Name",
                                            "description": "Name of Resource Group for custom image.  <a style=color:red;>Required if gallery image is specified.</a>",
                                            "type": "string",
                                            "example": "spotinst-azure"
                                          },
                                          "galleryName": {
                                            "title": "Gallery Name",
                                            "description": "Name of the gallery.  <a style=color:red;>Required if gallery image is specified.</a>",
                                            "type": "string",
                                            "example": "gallery-name"
                                          },
                                          "imageName": {
                                            "title": "Image Name",
                                            "description": "Name of the gallery image.  <a style=color:red;>Required if gallery image is specified.</a>",
                                            "type": "string",
                                            "example": "gallery-image-name"
                                          },
                                          "version": {
                                            "title": "Version",
                                            "description": "Image's version. Can be in the format x.x.x or 'latest'. <a style=color:red;>Required if gallery image is specified.</a>",
                                            "type": "string",
                                            "example": "0.0.1"
                                          },
                                          "spotAccountId": {
                                            "title": "Spot Account ID",
                                            "description": "The Spot account ID that connected to the Azure subscription to which the gallery belongs. Relevant only in case of cross-subscription shared galleries. [Read more](https://docs.flexera.com/spot/elastigroup/features-azure/shared-image-galleries) about cross-subscription shared galleries in Elastigroup.",
                                            "type": "string",
                                            "example": "act-123456789"
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "network": {
                                    "title": "Network",
                                    "description": "Define the Virtual Network and Subnet for your Elastigroup.",
                                    "type": "object",
                                    "required": [
                                      "resourceGroupName",
                                      "virtualNetworkName",
                                      "networkInterfaces"
                                    ],
                                    "properties": {
                                      "resourceGroupName": {
                                        "title": "Resource Group Name",
                                        "description": "Vnet Resource Group Name",
                                        "type": "string",
                                        "example": "subnetResourceGroup"
                                      },
                                      "virtualNetworkName": {
                                        "title": "Virtual Network Name",
                                        "description": "Virtual Network",
                                        "type": "string",
                                        "example": "vname"
                                      },
                                      "networkInterfaces": {
                                        "title": "Virtual Network Name",
                                        "description": "Virtual Network",
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "required": [
                                            "isPrimary",
                                            "subnetName"
                                          ],
                                          "properties": {
                                            "isPrimary": {
                                              "title": "Is Primary Criteria",
                                              "description": "Defines whether the network interface is primary or not.",
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "subnetName": {
                                              "title": "Subnet Name",
                                              "description": "Subnet name",
                                              "type": "string",
                                              "example": "testSubnet"
                                            },
                                            "assignPublicIp": {
                                              "title": "Assign Public IP",
                                              "description": "Assign public IP",
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "publicIpSku": {
                                              "title": "Type of Public Ip",
                                              "description": "Required if assignPublicIp=true values=[STANDARD/BASIC]",
                                              "type": "string",
                                              "example": "STANDARD"
                                            },
                                            "securityGroup": {
                                              "title": "Security Group",
                                              "description": "Security Group",
                                              "type": "object",
                                              "properties": {
                                                "name": {
                                                  "title": "Name",
                                                  "description": "Requires valid security group name. Required if security group is specified.",
                                                  "type": "string",
                                                  "example": "test"
                                                },
                                                "resourceGroupName": {
                                                  "title": "Resource Group Name",
                                                  "description": "Requires valid resource group name. Required if security group is specified.",
                                                  "type": "string",
                                                  "example": "test"
                                                }
                                              }
                                            },
                                            "publicIps": {
                                              "description": "Defined a pool of Public Ips (from Azure), that will be associated to the network interface. We will associate one public ip per instance until the pool is exhausted, in which case, we will create a new one.",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "required": [
                                                  "resourceGroupName",
                                                  "name"
                                                ],
                                                "properties": {
                                                  "resourceGroupName": {
                                                    "description": "The resource group of the public ip.",
                                                    "type": "string",
                                                    "example": "resourceGroup"
                                                  },
                                                  "name": {
                                                    "description": "The name of the public ip.",
                                                    "type": "string",
                                                    "example": "name"
                                                  }
                                                }
                                              }
                                            },
                                            "enableIPForwarding": {
                                              "title": "Enable IP Forwarding",
                                              "description": "Enable IP Forwarding",
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "additionalIpConfigurations": {
                                              "title": "Additional IP Configurations",
                                              "description": "Additional configuration of network interface",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "properties": {
                                                  "name": {
                                                    "title": "Name",
                                                    "description": "Required if additionalConfiguration has been specified.",
                                                    "type": "string",
                                                    "example": "test"
                                                  },
                                                  "privateIpAddressVersion": {
                                                    "title": "Private IP Address Version",
                                                    "description": "Possible values:\n+ IPv4\n+ IPv6",
                                                    "default": "IPv4"
                                                  }
                                                }
                                              }
                                            },
                                            "applicationSecurityGroups": {
                                              "description": "List of Application Security Groups that will be associated to the primary ip configration of the network interface.",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "required": [
                                                  "resourceGroupName",
                                                  "name"
                                                ],
                                                "properties": {
                                                  "resourceGroupName": {
                                                    "description": "The resource group of the Application Security Group.",
                                                    "type": "string",
                                                    "example": "AsgResourceGroup"
                                                  },
                                                  "name": {
                                                    "description": "The name of the Application Security group",
                                                    "type": "string",
                                                    "example": "AsgName"
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "login": {
                                    "type": "object",
                                    "description": "Set admin access for accessing your VMs. Password/SSH is required for Linux. <a style=color:red;>Required null if specialized image is set.</a>",
                                    "properties": {
                                      "userName": {
                                        "type": "string",
                                        "description": "user name for admin access to VMs.\\\nLogin can be set:\n* for windows: compute.launchSpecification.login.password\n* for linux: compute.launchSpecification.login.sshPublicKey\n\nJust user name, without pwd or SSH key\n",
                                        "example": "spotinst"
                                      },
                                      "sshPublicKey": {
                                        "type": "string",
                                        "description": "SSH for admin access to Linux VMs.\\\nOptional for Linux.\n",
                                        "example": "ssh-rsa"
                                      },
                                      "password": {
                                        "type": "string",
                                        "writeOnly": true,
                                        "description": "Password for admin access to Windows VMs.\\\nRequired for Windows.\n"
                                      }
                                    }
                                  },
                                  "loadBalancersConfig": {
                                    "type": "object",
                                    "description": "Configure a Load Balancer.\n",
                                    "properties": {
                                      "loadBalancers": {
                                        "type": "array",
                                        "description": "Add a load balancer. For Azure Gateway, each Backend Pool is a separate load balancer.\n",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "type": {
                                              "type": "string",
                                              "description": "The type of load balancer.\n",
                                              "enum": [
                                                "loadBalancer",
                                                "applicationGateway"
                                              ],
                                              "example": "loadBalancer"
                                            },
                                            "resourceGroupName": {
                                              "type": "string",
                                              "description": "The Resource Group name of the Load Balancer.\n",
                                              "example": "testResourceGroup"
                                            },
                                            "name": {
                                              "type": "string",
                                              "description": "Name of the Application Gateway/Load Balancer\n",
                                              "example": "testLoadBalancer"
                                            },
                                            "sku": {
                                              "type": "string",
                                              "description": "*if type is LoadBalancer then possible values are “Standard/Basic”;\n*if ApplicationGateway then possible values are “Standard_Large”,“Standard_Medium”,“Standard_Small”,“Standard_v2”,“WAF_Large”,“WAF_Medium”,“WAF_v2\"\n",
                                              "example": "Standard"
                                            },
                                            "backendPoolNames": {
                                              "type": "array",
                                              "items": {
                                                "type": "string"
                                              },
                                              "description": "Name of the Backend Pool to register the Elastigroup VMs to. Each Backend Pool is a separate load balancer.\\\nRequired if Type is APPLICATION_GATEWAY.\n",
                                              "example": [
                                                "testBackendPool1",
                                                "testBackendPool2"
                                              ]
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "managedServiceIdentities": {
                                    "type": "array",
                                    "writeOnly": true,
                                    "description": "Add a user-assigned managed identity to the VMs in the cluster.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "name of the managed identity\n",
                                          "example": "mySI2"
                                        },
                                        "resourceGroupName": {
                                          "type": "string",
                                          "description": "The Resource Group that the user-assigned managed identity resides in.\n",
                                          "example": "myResourceGroup"
                                        }
                                      }
                                    }
                                  },
                                  "shutdownScript": {
                                    "type": "string",
                                    "format": "byte",
                                    "writeOnly": true,
                                    "example": "IyEvdXNyL2Jpbi9lbnYgYmFzaAoiR29vZGJ5ZSBvbGQgaW5zdGFuY2Ui",
                                    "description": "shutdown script for the group. Value should be passed as a string encoded at Base64 only\n"
                                  },
                                  "tags": {
                                    "type": "array",
                                    "description": "Key-Value pairs for VMs in the Elastigroup.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "tagKey": {
                                          "type": "string",
                                          "description": "Tag Key for Vms in Elastigroup.\n",
                                          "example": "env"
                                        },
                                        "tagValue": {
                                          "type": "string",
                                          "description": "Tag Value for VMs in Elastigroup.\n",
                                          "example": "staging"
                                        }
                                      }
                                    }
                                  },
                                  "extensions": {
                                    "type": "array",
                                    "description": "List of objects for azure extensions\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "type",
                                        "publisher",
                                        "apiVersion",
                                        "minorVersionAutoUpgrade"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "Required on compute.launchSpecification.extensions object\n",
                                          "example": "extensionName"
                                        },
                                        "type": {
                                          "type": "string",
                                          "description": "Required on compute.launchSpecification.extensions object\n",
                                          "example": "customScript"
                                        },
                                        "publisher": {
                                          "type": "string",
                                          "description": "Required on compute.launchSpecification.extensions object\n",
                                          "example": "Microsoft.Azure.Extensions"
                                        },
                                        "apiVersion": {
                                          "type": "string",
                                          "description": "The API version of the extension. Required if extension specified.\n",
                                          "example": "2.0"
                                        },
                                        "minorVersionAutoUpgrade": {
                                          "type": "boolean",
                                          "description": "Required on compute.launchSpecification.extensions object\n",
                                          "example": true
                                        },
                                        "publicSettings": {
                                          "type": "object",
                                          "description": "Object for public settings\n"
                                        },
                                        "protectedSettings": {
                                          "type": "object",
                                          "description": "Object for protected settings\n"
                                        },
                                        "enableAutomaticUpgrade": {
                                          "title": "enable automatic upgrade",
                                          "description": "Indicates whether the extension should be automatically upgraded by the platform if there is a newer version of the extension available.\n",
                                          "type": "boolean",
                                          "example": false
                                        },
                                        "protectedSettingsFromKeyVault": {
                                          "title": "Protected Settings from key vault",
                                          "description": "The extensions protected settings that are passed by reference, and consumed from key vault.\n",
                                          "type": "object",
                                          "required": [
                                            "sourceVault",
                                            "secretUrl"
                                          ],
                                          "properties": {
                                            "sourceVault": {
                                              "title": "sourceVault",
                                              "type": "string",
                                              "description": "The relative URL of the Key Vault containing the secret.\n",
                                              "example": "/subscriptions/1234-1234-1234/resourceGroups/rg_test/providers/Microsoft.KeyVault/vaults/testKeyVault"
                                            },
                                            "secretUrl": {
                                              "title": "secretUrl",
                                              "type": "string",
                                              "description": "The URL referencing a secret in a Key Vault.\n",
                                              "example": "https://testKeyVault.vault.azure.net/secrets/SecretTest/123456"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "dataDisks": {
                                    "type": "array",
                                    "description": "list of data disks to be attached to the vms in the group.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "sizeGB": {
                                          "type": "integer",
                                          "description": "The size of the data disk in GB, Required if dataDisks is specified.\n",
                                          "minimum": 1,
                                          "maximum": 1023,
                                          "example": 1
                                        },
                                        "lun": {
                                          "type": "integer",
                                          "description": "The lun of the data disk, Required if dataDisks is specified.\n",
                                          "example": 1
                                        },
                                        "type": {
                                          "type": "string",
                                          "description": "The type of the data disk\n",
                                          "enum": [
                                            "Standard_LRS",
                                            "Premium_LRS",
                                            "StandardSSD_LRS",
                                            "StandardSSD_ZRS",
                                            "Premium_ZRS"
                                          ],
                                          "example": "Standard_LRS"
                                        }
                                      }
                                    }
                                  },
                                  "osDisk": {
                                    "type": "object",
                                    "description": "Specify OS disk specification other than default.\n",
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "description": "The type of the OS disk.\n",
                                        "enum": [
                                          "Standard_LRS",
                                          "Premium_LRS",
                                          "StandardSSD_LRS",
                                          "StandardSSD_ZRS",
                                          "Premium_ZRS"
                                        ],
                                        "example": "Standard_LRS"
                                      },
                                      "sizeGB": {
                                        "type": "integer",
                                        "description": "The size of the data disk in GB, Required if dataDisks is specified.\n",
                                        "minimum": 1,
                                        "maximum": 1023,
                                        "example": 30
                                      }
                                    }
                                  },
                                  "bootDiagnostics": {
                                    "type": "object",
                                    "description": "Will enable boot diagnostics in Azure when a new VM is launched",
                                    "required": [
                                      "isEnabled",
                                      "type"
                                    ],
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "description": "Allows you to enable and disable the configuration of boot diagnostics at launch"
                                      },
                                      "type": {
                                        "type": "string",
                                        "description": "Defines the type of storage on VM launch  in Azure.",
                                        "enum": [
                                          "managed",
                                          "unmanaged"
                                        ]
                                      },
                                      "storageUri": {
                                        "type": "string",
                                        "description": "The storage URI that is used if type is unmanaged. The storage URI must follow the blob storage URI format (\"https://<blobstoragename>.blob.core.windows.net/\"). StorageUri is required if the type is unmanaged. StorageUri must be ‘null’ in case the boot diagnostics type is managed"
                                      }
                                    },
                                    "example": {
                                      "isEnabled": true,
                                      "type": "unmanaged",
                                      "storageUri": "https://example.blob.core.windows.net/"
                                    }
                                  },
                                  "secrets": {
                                    "title": "secrets",
                                    "type": "array",
                                    "description": "Set of certificates that should be installed the VM\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "sourceVault",
                                        "vaultCertificates"
                                      ],
                                      "properties": {
                                        "sourceVault": {
                                          "type": "object",
                                          "description": "The key vault reference, contains the required certificates\n",
                                          "required": [
                                            "resourceGroupName",
                                            "name"
                                          ],
                                          "properties": {
                                            "resourceGroupName": {
                                              "type": "string",
                                              "description": "The resource group name of the key vault\n"
                                            },
                                            "name": {
                                              "type": "string",
                                              "description": "The name of the key vault\n"
                                            }
                                          }
                                        },
                                        "vaultCertificates": {
                                          "type": "array",
                                          "description": "The required certificate references\n",
                                          "items": {
                                            "type": "object",
                                            "required": [
                                              "certificateUrl",
                                              "certificateStore"
                                            ],
                                            "properties": {
                                              "certificateUrl": {
                                                "type": "string",
                                                "description": "The URL of the certificate under the key vault\n"
                                              },
                                              "certificateStore": {
                                                "type": "string",
                                                "description": "The certificate store directory the VM. The directory is created in the LocalMachine account.\n* This field is required only when using windows OS type\n* This field must be ‘null’ when the OS type is Linux\n"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "security": {
                                    "type": "object",
                                    "description": "Specifies the Security related profile settings for the virtual machine.\n",
                                    "properties": {
                                      "securityType": {
                                        "type": "string",
                                        "description": "Security type refers to the different security features of a virtual machine.\nSecurity features like Trusted launch virtual machines help to improve the security of Azure generation 2 virtual machines.\n",
                                        "enum": [
                                          "Standard",
                                          "TrustedLaunch",
                                          "ConfidentialVM"
                                        ],
                                        "example": "TrustedLaunch"
                                      },
                                      "secureBootEnabled": {
                                        "type": "boolean",
                                        "description": "Specifies whether secure boot should be enabled on the virtual machine.\n",
                                        "example": true
                                      },
                                      "vTpmEnabled": {
                                        "type": "boolean",
                                        "description": "Specifies whether vTPM should be enabled on the virtual machine.\n",
                                        "example": true
                                      },
                                      "confidentialOsDiskEncryption": {
                                        "type": "boolean",
                                        "description": "Confidential disk encryption binds the disk encryption keys to the VM's TPM, ensuring VM-only access.\nThe security type must be \"ConfidentialVM\" to enable defining this preference as “true”.\n",
                                        "example": false
                                      },
                                      "encryptionAtHost": {
                                        "type": "boolean",
                                        "description": "Enables host encryption for the virtual machine. Encryption at host can only be enabled if this property is set to true for the resource.\n",
                                        "example": true
                                      }
                                    }
                                  },
                                  "proximityPlacementGroups": {
                                    "type": "array",
                                    "description": "The proximity placement group where the VM is launched.",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "resourceGroupName"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "The name of the proximity placement group.",
                                          "example": "testPPG"
                                        },
                                        "resourceGroupName": {
                                          "type": "string",
                                          "description": "The resource group name of the proximity placement group.",
                                          "example": "testResourceGroup"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "zones": {
                                "type": "array",
                                "description": "List of Azure Availability Zones in the defined region; If not defined, Virtual machines will be launched regionally.",
                                "items": {
                                  "enum": [
                                    "1",
                                    "2",
                                    "3"
                                  ],
                                  "type": "string",
                                  "example": "1"
                                }
                              },
                              "preferredZones": {
                                "type": "array",
                                "description": "The AZs to prioritize when launching VMs. If no markets are available in the Preferred AZs, VMs are launched in the non-preferred AZs.\n<a style=color:red>Must be a sublist of compute.zones. </a>\n",
                                "items": {
                                  "enum": [
                                    "1",
                                    "2",
                                    "3"
                                  ],
                                  "type": "string",
                                  "example": "1"
                                }
                              }
                            }
                          },
                          "health": {
                            "type": "object",
                            "title": "Elastigroup Health",
                            "description": "Set health check and auto-healing of unhealthy VMs.\n",
                            "properties": {
                              "healthCheckTypes": {
                                "description": "Health check types to use in order to validate VM health.\n",
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "vmState",
                                    "applicationGateway"
                                  ]
                                },
                                "example": [
                                  "vmState"
                                ]
                              },
                              "gracePeriod": {
                                "type": "integer",
                                "description": "The amount of time (in seconds) after a new VM has launched before terminating the old VM.\n",
                                "example": 120
                              },
                              "autoHealing": {
                                "type": "boolean",
                                "example": true,
                                "description": "Enable auto-healing of unhealthy VMs.\n"
                              },
                              "unhealthyDuration": {
                                "type": "integer",
                                "description": "Amount of time (in seconds) for the VM to remain unhealthy before a replacement is triggered.\n",
                                "example": 360
                              }
                            }
                          },
                          "scheduling": {
                            "type": "object",
                            "title": "Stateless Group Scheduling",
                            "description": "Define cron-based scheduled tasks.\n",
                            "properties": {
                              "tasks": {
                                "type": "array",
                                "description": "A list of scheduling tasks.\nNote: The type of each task defines the behavior of the cron execution.\n",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "title": "Scaling Scheduled Task",
                                      "description": "This is a scheduled task that will allow to change the group's capacty. If the target\nis changed, then VMs will either be scaled up or down.\nNote: At least one of the following must be configured: [scaleTargetCapacity, scaleMaxCapacity, scaleMinCapacity]\n",
                                      "required": [
                                        "type",
                                        "isEnabled",
                                        "cronExpression"
                                      ],
                                      "properties": {
                                        "isEnabled": {
                                          "type": "string",
                                          "description": "A list of scheduling tasks.\n"
                                        },
                                        "cronExpression": {
                                          "type": "string",
                                          "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                          "example": "0 1 * * *"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "scale"
                                          ],
                                          "description": "Define cron-based scheduled tasks.\n"
                                        },
                                        "scaleTargetCapacity": {
                                          "type": "integer",
                                          "description": "This will set the defined target group capacity when the scheduling task is triggered.\n",
                                          "minimum": 0
                                        },
                                        "scaleMaxCapacity": {
                                          "type": "integer",
                                          "description": "This will set the defined maximum group capacity when the scheduling task is triggered.\n",
                                          "minimum": 0
                                        },
                                        "scaleMinCapacity": {
                                          "type": "integer",
                                          "description": "This will set the defined maximum group capacity when the scheduling task is triggered.\n",
                                          "minimum": 0
                                        }
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "title": "Scale Up Scheduled Task",
                                      "description": "This is a scheduled task that will allow to add VMs to the group's target capacity by a specific count.\n",
                                      "required": [
                                        "adjustment",
                                        "type",
                                        "isEnabled",
                                        "cronExpression"
                                      ],
                                      "properties": {
                                        "isEnabled": {
                                          "type": "string",
                                          "description": "A list of scheduling tasks.\n"
                                        },
                                        "cronExpression": {
                                          "type": "string",
                                          "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                          "example": "0 1 * * *"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "scaleUp"
                                          ],
                                          "description": "Defines the type of the scheduled task.\n"
                                        },
                                        "adjustment": {
                                          "type": "integer",
                                          "description": "This will increase the target capacity by the defined amount when the scheduling task is triggered.\n",
                                          "minimum": 1,
                                          "example": 1
                                        }
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "title": "Scale Down Scheduled Task",
                                      "description": "This is a scheduled task that will allow to remove VMs from the group's target capacity by a specific count.\n",
                                      "required": [
                                        "adjustment",
                                        "type",
                                        "isEnabled",
                                        "cronExpression"
                                      ],
                                      "properties": {
                                        "isEnabled": {
                                          "type": "string",
                                          "description": "A list of scheduling tasks.\n"
                                        },
                                        "cronExpression": {
                                          "type": "string",
                                          "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                          "example": "0 1 * * *"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "scaleDown"
                                          ],
                                          "description": "Defines the type of the scheduled task.\n"
                                        },
                                        "adjustment": {
                                          "type": "integer",
                                          "description": "This will decrease the target capacity by the defined amount when the scheduling task is triggered.\n",
                                          "minimum": 1,
                                          "example": 1
                                        }
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "title": "Scale Up Percentage Scheduled Task",
                                      "description": "This is a scheduled task that will allow to add VMs to the group's target capacity by a percentage of the group's current target.\n",
                                      "required": [
                                        "type",
                                        "isEnabled",
                                        "cronExpression",
                                        "adjustmentPercentage"
                                      ],
                                      "properties": {
                                        "isEnabled": {
                                          "type": "string",
                                          "description": "A list of scheduling tasks.\n"
                                        },
                                        "cronExpression": {
                                          "type": "string",
                                          "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                          "example": "0 1 * * *"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "scaleUpPercentage"
                                          ],
                                          "description": "Defines the type of the scheduled task.\n"
                                        },
                                        "adjustmentPercentage": {
                                          "type": "integer",
                                          "description": "This will increase the target capacity by the defined percentage value when the scheduling task is triggered.\nThis will set the target capacity by the defined percentage of the current target when the scheduling task triggers.\n",
                                          "minimum": 1,
                                          "maximum": 100
                                        }
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "title": "Scale Down Percentage Scheduled Task",
                                      "description": "This is a scheduled task that will allow to remove VMs from the group's target capacity by a percentage of the group's current target.\n",
                                      "required": [
                                        "adjustmentPercentage",
                                        "type",
                                        "isEnabled",
                                        "cronExpression"
                                      ],
                                      "properties": {
                                        "isEnabled": {
                                          "type": "string",
                                          "description": "A list of scheduling tasks.\n"
                                        },
                                        "cronExpression": {
                                          "type": "string",
                                          "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                          "example": "0 1 * * *"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "percentageScaleDown"
                                          ],
                                          "description": "Defines the type of the scheduled task.\n"
                                        },
                                        "adjustmentPercentage": {
                                          "type": "integer",
                                          "description": "This will decrease the target capacity by the defined percentage value when the scheduling task is triggered.\n",
                                          "minimum": 1,
                                          "maximum": 100
                                        }
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "title": "Deployment Scheduled Task",
                                      "description": "This is a scheduled task that will allow the deployment of an Elastigroup.\n",
                                      "required": [
                                        "batchSizePercentage",
                                        "gracePeriod",
                                        "type",
                                        "isEnabled",
                                        "cronExpression"
                                      ],
                                      "properties": {
                                        "isEnabled": {
                                          "type": "string",
                                          "description": "A list of scheduling tasks.\n"
                                        },
                                        "cronExpression": {
                                          "type": "string",
                                          "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                          "example": "0 1 * * *"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "deployment"
                                          ],
                                          "description": "Defines the type of the scheduled task.\n"
                                        },
                                        "batchSizePercentage": {
                                          "type": "integer",
                                          "description": "Indicates the timeout (in seconds) to wait until the VM becomes healthy, based on the healthCheckType.\n",
                                          "minimum": 1,
                                          "maximum": 100
                                        },
                                        "gracePeriod": {
                                          "type": "integer",
                                          "description": "Indicates (in seconds) the timeout to wait until instance become healthy based on the healthCheckType.\n",
                                          "minimum": 1
                                        }
                                      }
                                    }
                                  ]
                                }
                              }
                            }
                          },
                          "integrations": {
                            "type": "object",
                            "title": "Elastigroup Integrations",
                            "description": "Configure integrations for the VMs in the Elastigroup.\n",
                            "properties": {
                              "azureDns": {
                                "description": "Configure DNS zones for the VMs in the Elastigroup.\n[Read more](https://docs.flexera.com/spot/elastigroup/features-azure/dns)\n",
                                "type": "object",
                                "properties": {
                                  "dnsZones": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "title": "Azure DNS",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "description": "The type of DNS zone. Currently, only public is supported.\n",
                                          "enum": [
                                            "public"
                                          ],
                                          "example": "public"
                                        },
                                        "resourceGroup": {
                                          "type": "string",
                                          "description": "The resource group name of the DNS zone.\n",
                                          "example": "myResourceGroup"
                                        },
                                        "name": {
                                          "type": "string",
                                          "description": "The name of the DNS zone.\n",
                                          "example": "myDnsName"
                                        },
                                        "recordSets": {
                                          "type": "array",
                                          "description": "The record sets of virtual machine IPs to add to the DNS.",
                                          "items": {
                                            "type": "object",
                                            "title": "Record Sets",
                                            "properties": {
                                              "name": {
                                                "type": "string",
                                                "description": "The name of the record set.\n",
                                                "example": "myRecordSet"
                                              }
                                            }
                                          }
                                        },
                                        "spotAccountId": {
                                          "type": "string",
                                          "description": "For cross-subscription shared DNS zones, this is the Spot account ID of the Azure subscription in the DNS zone.\n"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "insights": {
                                "type": "object",
                                "description": "Configure insights for the VMs in the Elastigroup.\n",
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "description": "Enable insights for the VMs in the Elastigroup.\n"
                                  },
                                  "dataCollectionRuleId": {
                                    "type": "string",
                                    "description": "The ID of the data collection rule to be associated with the VMs in the Elastigroup.",
                                    "example": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Insights/dataCollectionRules/myDataCollectionRule"
                                  }
                                }
                              }
                            }
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2018-10-10T10:50:29.000+0000"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2018-11-01T10:50:29.000+0000"
                          }
                        }
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "group": {
                        "type": "object"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/group/sig-12345"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1group/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:compute:group"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Elastigroup",
        "description": "List an Elastigroup cluster.\n",
        "operationId": "elastigroupAzureSpotVmsGetGroup",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/group/sig-12345"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1group/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:compute:group"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Elastigroup",
        "description": "Delete an Elastigroup cluster.\n",
        "operationId": "elastigroupAzureSpotVmsDelete",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/group/sig-12345"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/capacity": {
      "put": {
        "summary": "Update Capacity",
        "description": "Update the capacity of an Elastigroup",
        "operationId": "elastigroupAzureSpotUpdateCapacity",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Elastigroup Capacity",
                    "description": "Capacity of Elastigroup.\n",
                    "properties": {
                      "capacity": {
                        "type": "object",
                        "title": "Capacity",
                        "description": "Capacity of Elastigroup.\n",
                        "properties": {
                          "target": {
                            "type": "integer",
                            "description": "Desired number of VMs for Elastigroup to maintain.\n",
                            "example": 8,
                            "minimum": 0
                          },
                          "minimum": {
                            "type": "integer",
                            "example": 2,
                            "description": "Minimum number of VMs.\n",
                            "minimum": 0
                          },
                          "maximum": {
                            "type": "integer",
                            "example": 10,
                            "description": "Maximum number of VMs.\n",
                            "minimum": 0
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D~1capacity/put/requestBody/content/application~1json/schema/allOf/0"
                              }
                            },
                            "kind": {
                              "type": "string",
                              "example": "spotinst:azure:compute:group:capacity"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group": {
      "post": {
        "summary": "Create Elastigroup",
        "description": "Create a new Elastigroup cluster.",
        "operationId": "elastigroupAzureSpotVmsCreate",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Create Elastigroup Azure Spot VMs Body",
                    "required": [
                      "group",
                      "name",
                      "region",
                      "capacity",
                      "strategy",
                      "compute"
                    ],
                    "properties": {
                      "group": {
                        "type": "object",
                        "required": [
                          "name",
                          "region",
                          "capacity",
                          "resourceGroupName",
                          "strategy",
                          "compute"
                        ],
                        "title": "Azure Elastigroup",
                        "description": "Azure Elastigroup Configuration",
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "sig-123456789",
                            "readOnly": true,
                            "description": "Azure Elastigroup ID\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "spotinst-group",
                            "description": "Azure Elastigroup Name\n"
                          },
                          "description": {
                            "type": "string",
                            "example": "This is my example elastigroup",
                            "description": "Describe your Azure Elastigroup\n"
                          },
                          "region": {
                            "type": "string",
                            "example": "eastus",
                            "description": "Valid Azure region the Elastigroup is managed in\n"
                          },
                          "resourceGroupName": {
                            "type": "string",
                            "example": "spotinst-azure",
                            "description": "The Azure resource group to associate the Elastigroup with\n"
                          },
                          "capacity": {
                            "type": "object",
                            "description": "Capacity of Elastigroup",
                            "required": [
                              "target",
                              "minimum",
                              "maximum"
                            ],
                            "properties": {
                              "target": {
                                "type": "integer",
                                "example": 8,
                                "description": "Current scale the Elastigroup will conform to"
                              },
                              "minimum": {
                                "type": "integer",
                                "example": 2,
                                "description": "The Elastigroup will not set a target below this value\n"
                              },
                              "maximum": {
                                "type": "integer",
                                "example": 10,
                                "description": "The Elastigroup will not set a target greater than this value\n"
                              }
                            }
                          },
                          "scaling": {
                            "type": "object",
                            "description": "Scaling Policies for Elastigroup. Set as many policies as needed to maximize the Elastigroup’s efficiency.",
                            "title": "Azure Scaling",
                            "properties": {
                              "up": {
                                "type": "object",
                                "title": "Scale Up Policies",
                                "description": "Provide the ability to accommodate increased workloads.",
                                "required": [
                                  "policyName",
                                  "metricName",
                                  "statistic",
                                  "threshold",
                                  "period",
                                  "isEnabled",
                                  "evaluationPeriods",
                                  "cooldown",
                                  "action",
                                  "operator",
                                  "namespace"
                                ],
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "example": "true",
                                    "description": "Specifies whether the scaling policy is enabled.\n",
                                    "default": true
                                  },
                                  "source": {
                                    "type": "string",
                                    "description": "The metric source.\n",
                                    "example": "azureMonitor",
                                    "enum": [
                                      "azureMonitor",
                                      "spotMetrics"
                                    ]
                                  },
                                  "policyName": {
                                    "title": "Policy Name",
                                    "description": "Name of scaling policy",
                                    "type": "string",
                                    "example": "cpuScale"
                                  },
                                  "metricName": {
                                    "title": "Metric Name",
                                    "description": "Metric to monitor by Azure metric display name",
                                    "type": "string",
                                    "example": "Percentage CPU"
                                  },
                                  "statistic": {
                                    "title": "Statistics",
                                    "description": "Statistic by which to evaluate the selected metric.",
                                    "type": "string",
                                    "example": "average",
                                    "enum": [
                                      "average",
                                      "sampleCount",
                                      "sum",
                                      "minimum",
                                      "maximum"
                                    ]
                                  },
                                  "unit": {
                                    "title": "Unit",
                                    "description": "Unit to measure to evaluate the selected metric:  Valid Values:\n+ Count\n+ Bytes\n+ Percent\n+ CountPerSecond\n+ Milliseconds\n+ BytesPerSecond\n+ Seconds",
                                    "type": "string",
                                    "example": "Count"
                                  },
                                  "threshold": {
                                    "title": "Threshold",
                                    "description": "The value at which the scaling action is triggered.",
                                    "type": "number",
                                    "format": "float",
                                    "example": 0.75
                                  },
                                  "period": {
                                    "title": "Period",
                                    "description": "Amount of time (seconds) for which the threshold must be met in order to trigger the scaling action.",
                                    "type": "integer",
                                    "example": 60
                                  },
                                  "evaluationPeriods": {
                                    "title": "Evaluation Periods",
                                    "description": "Amount of time (seconds) for which the threshold must be met in order to trigger the scaling action.",
                                    "type": "integer",
                                    "example": 3
                                  },
                                  "cooldown": {
                                    "title": "Cooldown",
                                    "description": "Time (seconds) to wait after a scaling action before resuming monitoring.",
                                    "type": "integer",
                                    "example": 300
                                  },
                                  "namespace": {
                                    "title": "namespace",
                                    "description": "Select one of the next namespaces presented in Azure configurator - https://docs.microsoft.com/en-us/azure/templates/",
                                    "type": "string",
                                    "example": "Microsoft.Network/applicationGateways",
                                    "default": "Microsoft.Compute"
                                  },
                                  "operator": {
                                    "title": "Operator",
                                    "description": "The operator used to evaluate the threshold against the current metric value.\n+ gt (Greater Than)\n+ gte (Greater Than or Equal)\n+ lt (Less Than)\n+ lte (Less Than or Equal) ",
                                    "type": "string",
                                    "example": "gte",
                                    "enum": [
                                      "gt",
                                      "gte",
                                      "lt",
                                      "lte"
                                    ]
                                  },
                                  "action": {
                                    "type": "object",
                                    "description": "The action to take when scale down is needed.\n",
                                    "oneOf": [
                                      {
                                        "type": "object",
                                        "title": "updateCapacity",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "description": "Type of scaling action to take when the scaling policy is triggered.\n",
                                            "example": "updateCapacity",
                                            "enum": [
                                              "adjustment",
                                              "updateCapacity"
                                            ]
                                          },
                                          "target": {
                                            "type": "integer",
                                            "title": "Target",
                                            "description": "Desired number of instances. Also you must indicate “minimum” and “maximum” amounts. Required if selected as action type:\n + updateCapacity\n",
                                            "example": 1
                                          },
                                          "minimum": {
                                            "type": "integer",
                                            "title": "Minimum",
                                            "description": "Lower limit of instances that you can scale up to. Also you must indicate “target” and “maximum” amounts. Required if selected as action type:\n+ updateCapacity\n",
                                            "example": 1
                                          },
                                          "maximum": {
                                            "type": "integer",
                                            "title": "Maximum",
                                            "description": "Upper limit of instances that you can scale up to. Also you must indicate “minimum” and “target” amounts. Required if selected as action type:\n+ updateCapacity\n",
                                            "example": 1
                                          }
                                        }
                                      },
                                      {
                                        "type": "object",
                                        "title": "adjustment",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "description": "Type of scaling action to take when the scaling policy is triggered.\n",
                                            "example": "adjustment",
                                            "enum": [
                                              "adjustment",
                                              "updateCapacity"
                                            ]
                                          },
                                          "adjustment": {
                                            "title": "Adjustment",
                                            "description": "Value to which the action type will be adjusted. Required if using the next action types:\n+ adjustment\n",
                                            "type": "string",
                                            "example": "2"
                                          }
                                        }
                                      }
                                    ]
                                  },
                                  "dimensions": {
                                    "type": "array",
                                    "description": "Required if scaling.down.namespace is different from \"Microsoft.Compute\".\\\n2 dimensions are required.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "Azure resource group for the scaling.up.dimensions. Required if using namespace different from \"Microsoft.Compute\".\n",
                                          "example": "resourceName"
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "Azure resource for the scaling.up.dimensions. Required if using namespace different from \"Microsoft.Compute\".\n",
                                          "example": "testApplicationGateway"
                                        }
                                      }
                                    },
                                    "example": [
                                      {
                                        "name": "resourceName",
                                        "value": "testApplicationGateway"
                                      },
                                      {
                                        "name": "resourceGroupName",
                                        "value": "testResourceGroup"
                                      }
                                    ]
                                  }
                                }
                              },
                              "down": {
                                "type": "object",
                                "title": "Scale Down Policies",
                                "description": "Provide the ability to scale down to maximize cost efficiency.",
                                "required": [
                                  "policyName",
                                  "metricName",
                                  "statistic",
                                  "threshold",
                                  "period",
                                  "evaluationPeriods",
                                  "isEnabled",
                                  "cooldown",
                                  "action",
                                  "operator",
                                  "namespace"
                                ],
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "example": "true",
                                    "description": "Specifies whether the scaling policy is enabled.\n",
                                    "default": true
                                  },
                                  "source": {
                                    "type": "string",
                                    "description": "The metric source.\n",
                                    "example": "azureMonitor",
                                    "enum": [
                                      "azureMonitor",
                                      "spotMetrics"
                                    ]
                                  },
                                  "policyName": {
                                    "title": "Policy Name",
                                    "description": "Name of scaling policy",
                                    "type": "string",
                                    "example": "cpuScale"
                                  },
                                  "metricName": {
                                    "title": "Metric Name",
                                    "description": "Metric to monitor by Azure metric display name",
                                    "type": "string",
                                    "example": "Percentage CPU"
                                  },
                                  "statistic": {
                                    "title": "Statistics",
                                    "description": "Statistic by which to evaluate the selected metric.",
                                    "type": "string",
                                    "example": "average",
                                    "enum": [
                                      "average",
                                      "sampleCount",
                                      "sum",
                                      "minimum",
                                      "maximum"
                                    ]
                                  },
                                  "unit": {
                                    "title": "Unit",
                                    "description": "Unit to measure to evaluate the selected metric:  Valid Values:\n+ Count\n+ Bytes\n+ Percent<\n+ CountPerSecond\n+ Milliseconds\n+ BytesPerSecond\n+ Seconds",
                                    "type": "string",
                                    "example": "Count"
                                  },
                                  "threshold": {
                                    "title": "Threshold",
                                    "description": "The value at which the scaling action is triggered.",
                                    "type": "number",
                                    "format": "float",
                                    "example": 0.75
                                  },
                                  "period": {
                                    "title": "Period",
                                    "description": "Amount of time (seconds) for which the threshold must be met in order to trigger the scaling action.",
                                    "type": "integer",
                                    "example": 60
                                  },
                                  "evaluationPeriods": {
                                    "title": "Evaluation Periods",
                                    "description": "Number of consecutive periods in which the threshold must be met in order to trigger the scaling action.",
                                    "type": "integer",
                                    "example": 3
                                  },
                                  "cooldown": {
                                    "title": "Cooldown",
                                    "description": "Time (seconds) to wait after a scaling action before resuming monitoring.",
                                    "type": "integer",
                                    "example": 300
                                  },
                                  "namespace": {
                                    "title": "Namespace",
                                    "description": "Select one of the next namespaces presented in Azure configurator - https://docs.microsoft.com/en-us/azure/templates/",
                                    "type": "string",
                                    "example": "Microsoft.Network/applicationGateways"
                                  },
                                  "operator": {
                                    "title": "Operator",
                                    "description": "The operator used to evaluate the threshold against the current metric value.\n+ gt (Greater Than)\n+ gte (Greater Than or Equal)\n+ lt (Less Than)\n+ lte (Less Than or Equal) ",
                                    "type": "string",
                                    "default": "lte",
                                    "example": "gte",
                                    "enum": [
                                      "gt",
                                      "gte",
                                      "lt",
                                      "lte"
                                    ]
                                  },
                                  "action": {
                                    "type": "object",
                                    "description": "The action to take when scale down is needed.\n",
                                    "oneOf": [
                                      {
                                        "type": "object",
                                        "title": "updateCapacity",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "description": "Type of scaling action to take when the scaling policy is triggered.\n",
                                            "example": "updateCapacity",
                                            "enum": [
                                              "adjustment",
                                              "updateCapacity"
                                            ]
                                          },
                                          "target": {
                                            "type": "integer",
                                            "title": "Target",
                                            "description": "The desired amount of instances. Must be defined along with the ‘minimum’ and ‘maximum’ amounts.\nRequired if selection as action type is:\n + updateCapacity\n",
                                            "example": 1
                                          },
                                          "minimum": {
                                            "type": "integer",
                                            "title": "Minimum",
                                            "description": "The lower limit of instances that you can scale down to. Must be defined along with the ‘maximum’ and ‘target’ amounts.\nRequired if selection as action type is:\n+ updateCapacity\n",
                                            "example": 1
                                          },
                                          "maximum": {
                                            "type": "integer",
                                            "title": "Maximum",
                                            "description": "The upper limit of instances that you can scale down to. Must be defined along with the ‘minimum’ and ‘target’ amounts.\nRequired if selection as action type is:\n+ updateCapacity\n",
                                            "example": 1
                                          }
                                        }
                                      },
                                      {
                                        "type": "object",
                                        "title": "adjustment",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "description": "Type of scaling action to take when the scaling policy is triggered.\n",
                                            "example": "adjustment",
                                            "enum": [
                                              "adjustment",
                                              "updateCapacity"
                                            ]
                                          },
                                          "adjustment": {
                                            "title": "Adjustment",
                                            "description": "Value to which the action type will be adjusted. Required if using the next action types:\n+ adjustment\n",
                                            "type": "string",
                                            "example": "2"
                                          }
                                        }
                                      }
                                    ]
                                  },
                                  "dimensions": {
                                    "type": "array",
                                    "description": "Required if scaling.up.namespace is different from \"Microsoft.Compute\".\\\n2 dimensions are required.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "Azure resource group for the scaling.down.dimensions. Required if using namespace different from \"Microsoft.Compute\".\n",
                                          "example": "resourceName"
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "Azure resource for the scaling.down.dimensions. Required if using namespace different from \"Microsoft.Compute\".\n",
                                          "example": "testApplicationGateway"
                                        }
                                      }
                                    },
                                    "example": [
                                      {
                                        "name": "resourceName",
                                        "value": "testApplicationGateway"
                                      },
                                      {
                                        "name": "resourceGroupName",
                                        "value": "testResourceGroup"
                                      }
                                    ]
                                  }
                                }
                              }
                            }
                          },
                          "strategy": {
                            "type": "object",
                            "title": "Scaling Strategy",
                            "properties": {
                              "shouldUtilizeCommitments": {
                                "type": "boolean",
                                "description": "Determines whether to utilize any existing Azure Savings Plans or Reserved Instances associated with the subscription for On-Demand VMs.\n",
                                "example": true,
                                "default": false
                              },
                              "spotPercentage": {
                                "title": "Spot Percentage",
                                "description": "Percentage of Spot-VMs to maintain.  <a style=color:red>Required if odCount isn't specified.</a>",
                                "type": "integer",
                                "default": 100,
                                "example": 100
                              },
                              "onDemandCount": {
                                "title": "On Demand Count",
                                "type": "integer",
                                "description": "Number of On-Demand VMs to maintain.  <a style=color:red>Required if spotPercentage isn't specified.</a>",
                                "example": 3
                              },
                              "drainingTimeout": {
                                "title": "Draining Timeout",
                                "type": "integer",
                                "description": "Time (seconds) to allow the VM be drained from incoming TCP connections and detached from MLB before terminating it during a scale down operation.",
                                "default": 120
                              },
                              "revertToSpot": {
                                "title": "Revert To Spot",
                                "type": "object",
                                "description": "Hold settings for strategy correction - replacing On-Demand for Spot VMs",
                                "properties": {
                                  "performAt": {
                                    "title": "Perform At",
                                    "type": "string",
                                    "description": "Settings for maintenance strategy - possible values:\n+ timeWindow\n+ never\n+ always",
                                    "default": "always"
                                  }
                                }
                              },
                              "optimizationWindows": {
                                "title": "Optimization Windows",
                                "description": "Valid format:\n+ ddd:hh:mm-ddd:hh:mm (day:hour(0-23):minute(0-59))\n+ not empty if revertToSpot.performAt = timeWindow",
                                "type": "array",
                                "items": {
                                  "type": "string"
                                }
                              },
                              "signals": {
                                "title": "Signals",
                                "description": "The signals defined for this group.",
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "timeout": {
                                      "title": "Timeout",
                                      "description": "The timeout in seconds to hold the vm until a signal is sent. If no signal is sent the vm will be replaced (vmReady) or we will terminate the vm (vmReadyToShutdown) after the timeout. (Maximum is 1800 seconds, Minimum is 60 seconds)",
                                      "default": 30,
                                      "type": "integer",
                                      "example": 50
                                    },
                                    "type": {
                                      "title": "Type",
                                      "description": "The type of the signal defined for the group. Valid Values: vmReady, vmReadyToShutdown",
                                      "type": "string",
                                      "example": "vmReady"
                                    }
                                  }
                                }
                              },
                              "availabilityVsCost": {
                                "title": "Elastigroup Availability VS Cost",
                                "description": "Set the desired preference for the Spot market VM selection. (100-  Availability, 0- cost)\n",
                                "type": "integer",
                                "example": 100
                              },
                              "capacityReservation": {
                                "type": "object",
                                "description": "On-demand Capacity Reservation group enables you to reserve Compute capacity in an Azure region or an Availability Zone for any duration of time.\n[CRG can only be created on the Azure end.](https://learn.microsoft.com/en-us/azure/virtual-machines/capacity-reservation-create)\n",
                                "required": [
                                  "shouldUtilize",
                                  "utilizationStrategy"
                                ],
                                "properties": {
                                  "shouldUtilize": {
                                    "type": "boolean",
                                    "description": "Determines whether capacity reservations should be utilized.\n",
                                    "example": true
                                  },
                                  "utilizationStrategy": {
                                    "type": "string",
                                    "description": "The priority requested for using CRG. This value will determine if CRG is used ahead of spot VMs or On-demand VMs.\n* utilizeOverOD- If picked, we will use CRG only in case On-demand should be launched.\n* utilizeOverSpot- CRG will be preferred over Spot. Only after CRG is fully used, spot VMs can be used.\n",
                                    "enum": [
                                      "utilizeOverSpot",
                                      "utilizeOverOD"
                                    ],
                                    "example": "utilizeOverSpot"
                                  },
                                  "capacityReservationGroups": {
                                    "type": "array",
                                    "description": "List of the desired CRGs to use under the associated Azure subscription.\nWhen null we will utilize any available reservation that matches the Virtual Node Group.\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "resourceGroupName"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "The name of the CRG.\n",
                                          "example": "capacityReservationGroupName"
                                        },
                                        "resourceGroupName": {
                                          "type": "string",
                                          "description": "Azure resource group name\n",
                                          "example": "resourceGroupName"
                                        },
                                        "shouldPrioritize": {
                                          "type": "boolean",
                                          "description": "The desired CRG to utilize ahead of other CRGs in the subscription.\n",
                                          "example": true
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "fallbackToOd": {
                                "type": "boolean",
                                "default": true,
                                "example": true,
                                "description": "When set to `true` Elastigroup will launch On Demand instances if no spot market is available\n"
                              }
                            }
                          },
                          "health": {
                            "title": "Health",
                            "description": "Set health check and auto-healing of unhealthy VMs.\n",
                            "type": "object",
                            "properties": {
                              "autoHealing": {
                                "title": "Auto Healing",
                                "description": "Enable auto-healing of unhealthy VMs.\n",
                                "type": "boolean",
                                "example": false
                              },
                              "healthCheckTypes": {
                                "title": "Health Check Types",
                                "description": "Health check types to use in order to validate VM health.\n",
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "vmState",
                                    "applicationGateway"
                                  ]
                                },
                                "example": [
                                  "vmState"
                                ]
                              },
                              "gracePeriod": {
                                "title": "Grace Period",
                                "description": "The amount of time (in seconds) after a new VM has launched before terminating the old VM.\n",
                                "type": "integer",
                                "example": 300
                              },
                              "unhealthyDuration": {
                                "title": "Unhealthy Duration",
                                "description": "Amount of time (in seconds) for the VM to remain unhealthy before a replacement is triggered.\n",
                                "type": "integer",
                                "example": 360
                              }
                            }
                          },
                          "compute": {
                            "title": "Compute",
                            "description": "Elastigroup's Compute Configurtion",
                            "type": "object",
                            "required": [
                              "vmSizes",
                              "os",
                              "launchSpecification"
                            ],
                            "properties": {
                              "vmSizes": {
                                "title": "VM Sizes",
                                "description": "Sizes of On-Demand and Low-Priority VMs.",
                                "type": "object",
                                "required": [
                                  "odSizes",
                                  "spotSizes"
                                ],
                                "properties": {
                                  "odSizes": {
                                    "title": "OD Sizes",
                                    "type": "array",
                                    "description": "Array of string (s) with Available On-Demand sizes (pls chose items that correspond to your location or zone) https://docs.microsoft.com/uk-ua/azure/virtual-machines/sizes:",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_b1s"
                                    }
                                  },
                                  "spotSizes": {
                                    "title": "Spot Sizes",
                                    "description": "Available Spot-VM sizes. Find the list in Azure https://docs.microsoft.com/en-us/azure/virtual-machines/spot-vms?toc=/azure/virtual-machines/linux/toc.json&bc=/azure/virtual-machines/linux/breadcrumb/toc.json.\n<a style=color:red>Required if spotSizeAttributes isn't specified.</a>\n",
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a1_v2"
                                    }
                                  },
                                  "preferredSpotSizes": {
                                    "type": "array",
                                    "description": "Prioritize Spot VM sizes when launching Spot VMs for the group.\n<a style=color:red>Must be a sublist of compute.vmSizes.spotSizes. </a>\n",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a2_v2"
                                    }
                                  },
                                  "spotSizeAttributes": {
                                    "type": "object",
                                    "title": "Elastigroup spot size attributes",
                                    "description": "The values and ranges for spot size attributes when launching VMs.  \n <a style=color:red>Required if spotSizes isn't specified.</a>\n",
                                    "properties": {
                                      "minCpu": {
                                        "type": "integer",
                                        "description": "Minimum instance CPU units.\n",
                                        "example": 2
                                      },
                                      "maxCpu": {
                                        "type": "integer",
                                        "description": "Maximum instance CPU units.\n",
                                        "example": 8
                                      },
                                      "minStorage": {
                                        "type": "integer",
                                        "description": "Minimum instance storage (GiB).\n",
                                        "example": 5
                                      },
                                      "maxStorage": {
                                        "type": "integer",
                                        "description": "Maximum instance storage (GiB).\n",
                                        "example": 50
                                      },
                                      "minMemory": {
                                        "type": "integer",
                                        "description": "Minimum instance memory (GiB).\n",
                                        "example": 2
                                      },
                                      "maxMemory": {
                                        "type": "integer",
                                        "description": "Maximum instance memory (GiB).\n",
                                        "example": 2
                                      }
                                    }
                                  },
                                  "excludedVmSizes": {
                                    "type": "array",
                                    "description": "Exclude these spot VM sizes when using attribute-based VM sizes.\n",
                                    "example": [
                                      "standard_a2_v2",
                                      "standard_d2s_v3"
                                    ],
                                    "items": {
                                      "type": "string"
                                    }
                                  }
                                }
                              },
                              "os": {
                                "type": "string",
                                "example": "Linux",
                                "enum": [
                                  "Linux",
                                  "Windows"
                                ]
                              },
                              "launchSpecification": {
                                "title": "Virtual Node Group",
                                "description": "Virtual Node Group Configuration",
                                "type": "object",
                                "required": [
                                  "image",
                                  "network",
                                  "subnetName"
                                ],
                                "properties": {
                                  "image": {
                                    "title": "Image",
                                    "description": "Image of VM. An image is a template for creating new VMs. Choose from Azure image catalogue (marketplace) or use a custom image or chosen from shared gallery image.",
                                    "type": "object",
                                    "properties": {
                                      "marketplace": {
                                        "title": "Marketplace",
                                        "type": "object",
                                        "description": "Select an image from Azure's Marketplace image catalogue. Cannot be used with `custom` or `gallery`. <a style=color:red;>Required if custom or gallery image are not specified.</a>",
                                        "properties": {
                                          "publisher": {
                                            "title": "Publisher",
                                            "description": "Image publisher.  <a style=color:red;>Required if marketplace image is specified.</a>",
                                            "type": "string",
                                            "example": "OpenLogic"
                                          },
                                          "offer": {
                                            "title": "Offer",
                                            "description": "Name of image to use.  <a style=color:red;>Required if marketplace image is specified.</a>",
                                            "type": "string",
                                            "example": "CentOS"
                                          },
                                          "sku": {
                                            "title": "Stock Keeping Unit",
                                            "description": "Image's Stock Keeping Unit, which is the specific version of the image.  <a style=color:red;>Required if marketplace image is specified.</a>",
                                            "type": "string",
                                            "example": "7.3"
                                          },
                                          "version": {
                                            "title": "Version",
                                            "description": "Image's version. if version not provided we use 'latest'",
                                            "type": "string",
                                            "example": "7.3-1611",
                                            "default": "latest"
                                          }
                                        }
                                      },
                                      "custom": {
                                        "title": "Custom",
                                        "type": "object",
                                        "description": "Custom image to launch Elastigroup with. Cannot be used with `marketplace` or `gallery`. <a style=color:red;>Required if marketplace or gallery image are not specified.</a>",
                                        "properties": {
                                          "resourceGroupName": {
                                            "title": "Resource Group Name",
                                            "description": "Name of Resource Group for custom image.  <a style=color:red;>Required if custom image is specified.</a>",
                                            "type": "string",
                                            "example": "spotinst-azure"
                                          },
                                          "name": {
                                            "title": "Image Name",
                                            "description": "Name of the custom image.  <a style=color:red;>Required if custom image is specified.</a>",
                                            "type": "string",
                                            "example": "custom-image-name"
                                          }
                                        }
                                      },
                                      "gallery": {
                                        "title": "Gallery",
                                        "type": "object",
                                        "description": "Gallery image to launch Elastigroup with. Cannot be used with `marketplace` or `custom`. <a style=color:red;>Required if marketplace or custom image are not specified.</a>",
                                        "properties": {
                                          "resourceGroupName": {
                                            "title": "Resource Group Name",
                                            "description": "Name of Resource Group for custom image.  <a style=color:red;>Required if gallery image is specified.</a>",
                                            "type": "string",
                                            "example": "spotinst-azure"
                                          },
                                          "galleryName": {
                                            "title": "Gallery Name",
                                            "description": "Name of the gallery.  <a style=color:red;>Required if gallery image is specified.</a>",
                                            "type": "string",
                                            "example": "gallery-name"
                                          },
                                          "imageName": {
                                            "title": "Image Name",
                                            "description": "Name of the gallery image.  <a style=color:red;>Required if gallery image is specified.</a>",
                                            "type": "string",
                                            "example": "gallery-image-name"
                                          },
                                          "version": {
                                            "title": "Version",
                                            "description": "Image's version. Can be in the format x.x.x or 'latest'. <a style=color:red;>Required if gallery image is specified.</a>",
                                            "type": "string",
                                            "example": "0.0.1"
                                          },
                                          "spotAccountId": {
                                            "title": "Spot Account ID",
                                            "description": "The Spot account ID that connected to the Azure subscription to which the gallery belongs. Relevant only in case of cross-subscription shared galleries. [Read more](https://docs.flexera.com/spot/elastigroup/features-azure/shared-image-galleries) about cross-subscription shared galleries in Elastigroup.",
                                            "type": "string",
                                            "example": "act-123456789"
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "loadBalancersConfig": {
                                    "title": "Load Balancer Configuration",
                                    "description": "Configure a Load Balancer",
                                    "type": "object",
                                    "properties": {
                                      "loadBalancers": {
                                        "type": "array",
                                        "description": "Add a load balancer. For Azure Gateway, each Backend Pool is a separate load balancer.\n",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "type": {
                                              "type": "string",
                                              "description": "The type of load balancer.\n",
                                              "enum": [
                                                "loadBalancer",
                                                "applicationGateway"
                                              ],
                                              "example": "loadBalancer"
                                            },
                                            "resourceGroupName": {
                                              "type": "string",
                                              "description": "The Resource Group name of the Load Balancer.\n",
                                              "example": "testResourceGroup"
                                            },
                                            "name": {
                                              "type": "string",
                                              "description": "Name of the Application Gateway/Load Balancer\n",
                                              "example": "testLoadBalancer"
                                            },
                                            "sku": {
                                              "type": "string",
                                              "description": "* if type is LoadBalancer then possible values are:\n * “Standard\"\n * Basic”\n* if ApplicationGateway then possible values are:\n * “Standard_Large”\n * “Standard_Medium”\n * “Standard_Small”\n * “Standard_v2\n * “WAF_Large”\n * “WAF_Medium\"\n * “WAF_v2\"\n",
                                              "example": "Standard"
                                            },
                                            "backendPoolNames": {
                                              "type": "array",
                                              "items": {
                                                "type": "string"
                                              },
                                              "description": "Name of the Backend Pool to register the Elastigroup VMs to.\\\nEach Backend Pool is a separate load balancer.\\\nRequired if Type is APPLICATION_GATEWAY.\n",
                                              "example": [
                                                "testBackendPool1",
                                                "testBackendPool2"
                                              ]
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "managedServiceIdentities": {
                                    "title": "Managed Service Identities",
                                    "description": "Add a user-assigned managed identity to the VMs in the cluster.",
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "resourceGroupName": {
                                          "title": "Resource Group Name",
                                          "description": "The Resource Group that the user-assigned managed identity resides in.",
                                          "type": "string",
                                          "example": "Resourse Group 1"
                                        },
                                        "name": {
                                          "title": "Name",
                                          "description": "Name of the managed identity",
                                          "type": "string",
                                          "example": "Test"
                                        }
                                      }
                                    }
                                  },
                                  "shutdownScript": {
                                    "title": "Shutdown Script",
                                    "description": "Shutdown script for the group. Value should be passed as a string encoded at Base64 only",
                                    "type": "string",
                                    "example": "IyEvYmluL2Jhc2gKZWNobyAidGVzdCI="
                                  },
                                  "tags": {
                                    "title": "Tags",
                                    "description": "Key-Value pairs for VMs in the Elastigroup.",
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "tagKey": {
                                          "title": "Tag Key",
                                          "description": "Tag Key for Vms in Elastigroup.",
                                          "type": "string",
                                          "example": "env"
                                        },
                                        "tagValue": {
                                          "title": "Tag Value",
                                          "description": "Tag Value for VMs in Elastigroup.",
                                          "type": "string",
                                          "example": "staging"
                                        }
                                      }
                                    }
                                  },
                                  "network": {
                                    "title": "Network",
                                    "description": "Define the Virtual Network and Subnet for your Elastigroup.",
                                    "type": "object",
                                    "required": [
                                      "resourceGroupName",
                                      "virtualNetworkName",
                                      "networkInterfaces"
                                    ],
                                    "properties": {
                                      "resourceGroupName": {
                                        "title": "Resource Group Name",
                                        "description": "Vnet Resource Group Name",
                                        "type": "string",
                                        "example": "subnetResourceGroup"
                                      },
                                      "virtualNetworkName": {
                                        "title": "Virtual Network Name",
                                        "description": "Virtual Network",
                                        "type": "string",
                                        "example": "vname"
                                      },
                                      "networkInterfaces": {
                                        "title": "Virtual Network Name",
                                        "description": "Virtual Network",
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "required": [
                                            "isPrimary",
                                            "subnetName"
                                          ],
                                          "properties": {
                                            "isPrimary": {
                                              "title": "Is Primary Criteria",
                                              "description": "Defines whether the network interface is primary or not.",
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "subnetName": {
                                              "title": "Subnet Name",
                                              "description": "Subnet name",
                                              "type": "string",
                                              "example": "testSubnet"
                                            },
                                            "assignPublicIp": {
                                              "title": "Assign Public IP",
                                              "description": "Assign public IP",
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "publicIpSku": {
                                              "title": "Public Ip SKU",
                                              "description": "Required if assignPublicIp=true values=[STANDARD/BASIC]",
                                              "type": "string",
                                              "example": "STANDARD"
                                            },
                                            "securityGroup": {
                                              "title": "Security Group",
                                              "description": "Security Group",
                                              "type": "object",
                                              "properties": {
                                                "name": {
                                                  "title": "Name",
                                                  "description": "Requires valid security group name. Required if security group is specified.",
                                                  "type": "string",
                                                  "example": "test"
                                                },
                                                "resourceGroupName": {
                                                  "title": "Resource Group Name",
                                                  "description": "Requires valid resource group name. Required if security group is specified.",
                                                  "type": "string",
                                                  "example": "test"
                                                }
                                              }
                                            },
                                            "publicIps": {
                                              "description": "Defined a pool of Public Ips (from Azure), that will be associated to the network interface. We will associate one public ip per instance until the pool is exhausted, in which case, we will create a new one.",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "required": [
                                                  "resourceGroupName",
                                                  "name"
                                                ],
                                                "properties": {
                                                  "resourceGroupName": {
                                                    "description": "The resource group of the public ip.",
                                                    "type": "string",
                                                    "example": "resourceGroup"
                                                  },
                                                  "name": {
                                                    "description": "The name of the public ip.",
                                                    "type": "string",
                                                    "example": "name"
                                                  }
                                                }
                                              }
                                            },
                                            "enableIPForwarding": {
                                              "title": "Enable IP Forwarding",
                                              "description": "Enable IP Forwarding",
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "additionalIpConfigurations": {
                                              "title": "Additional IP Configurations",
                                              "description": "Additional configuration of network interface",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "properties": {
                                                  "name": {
                                                    "title": "Name",
                                                    "description": "Required if additionalConfiguration has been specified.",
                                                    "type": "string",
                                                    "example": "test"
                                                  },
                                                  "privateIpAddressVersion": {
                                                    "title": "Private IP Address Version",
                                                    "description": "Possible values:\n+ IPv4\n+ IPv6",
                                                    "default": "IPv4"
                                                  }
                                                }
                                              }
                                            },
                                            "privateIpAddresses": {
                                              "type": "array",
                                              "description": "A list with unique items that every item is a valid IP",
                                              "items": {
                                                "type": "string",
                                                "example": [
                                                  "172.232.5.3",
                                                  "172.23.5.4",
                                                  "172.23.5.7",
                                                  "172.23.5.8",
                                                  "172.23.5.9",
                                                  "172.23.5.10"
                                                ]
                                              }
                                            },
                                            "applicationSecurityGroups": {
                                              "description": "List of Application Security Groups that will be associated to the primary ip configration of the network interface.",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "required": [
                                                  "resourceGroupName",
                                                  "name"
                                                ],
                                                "properties": {
                                                  "resourceGroupName": {
                                                    "description": "The resource group of the Application Security Group.",
                                                    "type": "string",
                                                    "example": "AsgResourceGroup"
                                                  },
                                                  "name": {
                                                    "description": "The name of the Application Security group",
                                                    "type": "string",
                                                    "example": "AsgName"
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "extensions": {
                                    "title": "Extensions",
                                    "description": "List of objects for Azure extensions\n",
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "minorVersionAutoUpgrade",
                                        "name",
                                        "publisher",
                                        "type"
                                      ],
                                      "properties": {
                                        "name": {
                                          "title": "name",
                                          "description": "Required on compute.launchSpecification.extensions object.\n",
                                          "type": "string",
                                          "example": "k8s-agentpool1-38611891-vmss-computeAksLinuxBilling"
                                        },
                                        "protectedSettings": {
                                          "title": "Protected Settings",
                                          "description": "Object for protected settings.\n",
                                          "type": "object"
                                        },
                                        "enableAutomaticUpgrade": {
                                          "title": "enable automatic upgrade",
                                          "description": "Indicates whether the extension should be automatically upgraded by the platform if there is a newer version of the extension available.\n",
                                          "type": "boolean",
                                          "example": false
                                        },
                                        "protectedSettingsFromKeyVault": {
                                          "title": "Protected Settings from key vault",
                                          "description": "The extensions protected settings that are passed by reference, and consumed from key vault.\n",
                                          "type": "object",
                                          "required": [
                                            "sourceVault",
                                            "secretUrl"
                                          ],
                                          "properties": {
                                            "sourceVault": {
                                              "title": "sourceVault",
                                              "type": "string",
                                              "description": "The relative URL of the Key Vault containing the secret.\n",
                                              "example": "/subscriptions/1234-1234-1234/resourceGroups/rg_test/providers/Microsoft.KeyVault/vaults/testKeyVault"
                                            },
                                            "secretUrl": {
                                              "title": "secretUrl",
                                              "type": "string",
                                              "description": "The URL referencing a secret in a Key Vault.\n",
                                              "example": "https://testKeyVault.vault.azure.net/secrets/SecretTest/123456"
                                            }
                                          }
                                        },
                                        "publicSettings": {
                                          "title": "Public Settings",
                                          "description": "Public Settings.\n",
                                          "type": "object"
                                        },
                                        "publisher": {
                                          "title": "Publisher",
                                          "description": "Required on compute.launchSpecification.extensions object.\n",
                                          "type": "string",
                                          "example": "Microsoft.AKS"
                                        },
                                        "type": {
                                          "title": "Type",
                                          "description": "Required on compute.launchSpecification.extensions object.\n",
                                          "type": "string",
                                          "example": "Compute.AKS-Engine.Linux.Billing"
                                        },
                                        "apiVersion": {
                                          "title": "API Version",
                                          "description": "The API version of the extension. Required if extension specified.\n",
                                          "type": "string",
                                          "example": 1
                                        },
                                        "minorVersionAutoUpgrade": {
                                          "title": "minorVersionAutoUpgrade",
                                          "description": "Enable minor version upgrades of the extension. Required if extension specified.\n",
                                          "type": "boolean",
                                          "example": true
                                        }
                                      }
                                    }
                                  },
                                  "dataDisks": {
                                    "title": "Data Disks",
                                    "description": "List of data disks to be attached to the vms in the group.",
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "title": "Type",
                                          "description": "The type of the data disk. Required if dataDisks is specified. Possible values:\n+ Standard_LRS\n+ Premium_LRS\n+ StandardSSD_LRS\n+ StandardSSD_ZRS\n+ Premium_ZRS",
                                          "type": "string",
                                          "example": "Standard_LRS"
                                        },
                                        "lun": {
                                          "title": "Lun",
                                          "description": "The lun of the data disk, Required if dataDisks is specified.",
                                          "type": "integer",
                                          "example": 6
                                        },
                                        "sizeGB": {
                                          "title": "Size GB",
                                          "description": "The size of the data disk in GB, Required if dataDisks is specified. Minimum value: 1 Maximum value: 1023",
                                          "type": "integer",
                                          "example": 10
                                        }
                                      }
                                    }
                                  },
                                  "osDisk": {
                                    "title": "OS Disk",
                                    "description": "Specify OS disk specification other than default.",
                                    "type": "object",
                                    "properties": {
                                      "type": {
                                        "title": "Type",
                                        "description": "The type of the OS disk. Required if dataDisks is specified. Possible values:\n+ Standard_LRS\n+ Premium_LRS\n+ StandardSSD_LRS\n+ StandardSSD_ZRS\n+ Premium_ZRS",
                                        "type": "string",
                                        "example": "Standard_LRS"
                                      },
                                      "size": {
                                        "title": "Size",
                                        "description": "The size of the OS disk in GB, Required if dataDisks is specified. Minimum value: 1 Maximum value: 1023",
                                        "type": "integer",
                                        "example": 6
                                      }
                                    }
                                  },
                                  "vmNamePrefix": {
                                    "type": "string",
                                    "description": "Set a VM name prefix to be used for all launched VMs and the VM resources.\n* The prefix value should comply with the following limitations: \n  *  A maximal length of 25 characters.\n  * The prefix can’t contain spaces, control characters, or these characters: ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } | ; : . ' \" , < > / ?\n  * The VM prefix can't end with a hyphen.\n",
                                    "example": "prefix"
                                  },
                                  "licenseType": {
                                    "type": "string",
                                    "description": "Enables Azure Hybrid Benefit.\nAccepted values: Windows_Client, Windows_Server, RHEL_BYOS, SLES_BYOS.\n",
                                    "example": "Windows_Server"
                                  },
                                  "customData": {
                                    "title": "Custom Data",
                                    "description": "This value will hold the YML in base64 and will be added to the scaleSets",
                                    "type": "string",
                                    "example": "IyEvYmluL2Jhc2gKZWNobyAidGVzdCI="
                                  },
                                  "userData": {
                                    "type": "string",
                                    "description": "Define a set of scripts or other metadata that's inserted to an Azure virtual machine at provision time. (Base64 encoded)\n",
                                    "example": "IyEvYmluL2Jhc2gKZWNobyAidGVzdCI"
                                  },
                                  "login": {
                                    "title": "Login",
                                    "description": "Set admin access for accessing your VMs. <a style=color:red;>Required if custom, marketplace or generalized gallery image are specified. If specialized image is set, Login should not be defined</a>",
                                    "type": "object",
                                    "required": [
                                      "userName"
                                    ],
                                    "properties": {
                                      "userName": {
                                        "title": "User Name",
                                        "description": "User name for admin access to VMs. + for windows: compute.launchSpecification.login.password + for linux: compute.launchSpecification.login.sshPublicKey",
                                        "type": "string",
                                        "example": "spotinst"
                                      },
                                      "sshPublicKey": {
                                        "title": "SSH Public Key",
                                        "description": "SSH for admin access to Linux VMs.  <a style = color:red>Required for Linux.  Can not exist simultaneously with 'password'</a>",
                                        "type": "string"
                                      },
                                      "password": {
                                        "title": "Password",
                                        "description": "Password for admin access to Windows VMs.  <a style = color:red>Required for Windows. Can not exist simultaneously with 'sshPublicKey'</a>",
                                        "type": "string"
                                      }
                                    }
                                  },
                                  "bootDiagnostics": {
                                    "type": "object",
                                    "description": "Will enable boot diagnostics in Azure when a new VM is launched",
                                    "required": [
                                      "isEnabled",
                                      "type"
                                    ],
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "description": "Allows you to enable and disable the configuration of boot diagnostics at launch"
                                      },
                                      "type": {
                                        "type": "string",
                                        "description": "Defines the type of storage on VM launch  in Azure.",
                                        "enum": [
                                          "managed",
                                          "unmanaged"
                                        ]
                                      },
                                      "storageUri": {
                                        "type": "string",
                                        "description": "The storage URI that is used if type is unmanaged. The storage URI must follow the blob storage URI format (\"https://<blobstoragename>.blob.core.windows.net/\"). StorageUri is required if the type is unmanaged. StorageUri must be ‘null’ in case the boot diagnostics type is managed"
                                      }
                                    },
                                    "example": {
                                      "isEnabled": true,
                                      "type": "unmanaged",
                                      "storageUri": "https://example.blob.core.windows.net/"
                                    }
                                  },
                                  "secrets": {
                                    "title": "secrets",
                                    "type": "array",
                                    "description": "Set of certificates that should be installed the VM\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "sourceVault",
                                        "vaultCertificates"
                                      ],
                                      "properties": {
                                        "sourceVault": {
                                          "type": "object",
                                          "description": "The key vault reference, contains the required certificates\n",
                                          "required": [
                                            "resourceGroupName",
                                            "name"
                                          ],
                                          "properties": {
                                            "resourceGroupName": {
                                              "type": "string",
                                              "description": "The resource group name of the key vault\n"
                                            },
                                            "name": {
                                              "type": "string",
                                              "description": "The name of the key vault\n"
                                            }
                                          }
                                        },
                                        "vaultCertificates": {
                                          "type": "array",
                                          "description": "The required certificate references\n",
                                          "items": {
                                            "type": "object",
                                            "required": [
                                              "certificateUrl",
                                              "certificateStore"
                                            ],
                                            "properties": {
                                              "certificateUrl": {
                                                "type": "string",
                                                "description": "The URL of the certificate under the key vault\n"
                                              },
                                              "certificateStore": {
                                                "type": "string",
                                                "description": "The certificate store directory the VM. The directory is created in the LocalMachine account.\n* This field is required only when using windows OS type\n* This field must be ‘null’ when the OS type is Linux\n"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "security": {
                                    "type": "object",
                                    "description": "Specifies the Security related profile settings for the virtual machine.\n",
                                    "properties": {
                                      "securityType": {
                                        "type": "string",
                                        "description": "Security type refers to the different security features of a virtual machine.\nSecurity features like Trusted launch virtual machines help to improve the security of Azure generation 2 virtual machines.\n",
                                        "enum": [
                                          "Standard",
                                          "TrustedLaunch",
                                          "ConfidentialVM"
                                        ],
                                        "example": "TrustedLaunch"
                                      },
                                      "secureBootEnabled": {
                                        "type": "boolean",
                                        "description": "Specifies whether secure boot should be enabled on the virtual machine.\n",
                                        "example": true
                                      },
                                      "vTpmEnabled": {
                                        "type": "boolean",
                                        "description": "Specifies whether vTPM should be enabled on the virtual machine.\n",
                                        "example": true
                                      },
                                      "confidentialOsDiskEncryption": {
                                        "type": "boolean",
                                        "description": "Confidential disk encryption binds the disk encryption keys to the VM's TPM, ensuring VM-only access.\nThe security type must be \"ConfidentialVM\" to enable defining this preference as “true”.\n",
                                        "example": false
                                      },
                                      "encryptionAtHost": {
                                        "type": "boolean",
                                        "description": "Enables host encryption for the virtual machine. Encryption at host can only be enabled if this property is set to true for the resource.\n",
                                        "example": true
                                      }
                                    }
                                  },
                                  "proximityPlacementGroups": {
                                    "type": "array",
                                    "description": "The proximity placement group where the VM is launched.",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "resourceGroupName"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "The name of the proximity placement group.",
                                          "example": "testPPG"
                                        },
                                        "resourceGroupName": {
                                          "type": "string",
                                          "description": "The resource group name of the proximity placement group.",
                                          "example": "testResourceGroup"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "zones": {
                                "type": "array",
                                "description": "List of Azure Availability Zones in the defined region; If not defined, Virtual machines will be launched regionally.",
                                "items": {
                                  "enum": [
                                    "1",
                                    "2",
                                    "3"
                                  ],
                                  "type": "string",
                                  "example": "1"
                                }
                              },
                              "preferredZones": {
                                "type": "array",
                                "description": "The AZs to prioritize when launching VMs. If no markets are available in the Preferred AZs, VMs are launched in the non-preferred AZs.\n<a style=color:red>Must be a sublist of compute.zones.</a>\n",
                                "items": {
                                  "enum": [
                                    "1",
                                    "2",
                                    "3"
                                  ],
                                  "type": "string",
                                  "example": "1"
                                }
                              }
                            }
                          },
                          "scheduling": {
                            "description": "Define cron-based scheduled tasks.\n",
                            "properties": {
                              "tasks": {
                                "type": "array",
                                "description": "A list of scheduling tasks.\nNote: The type of each task defines the behavior of the cron execution.\n",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "title": "Scaling Scheduled Task",
                                      "description": "This is a scheduled task that will allow to change the group's capacty. If the target\nis changed, then VMs will either be scaled up or down.\nNote: At least one of the following must be configured: [scaleTargetCapacity, scaleMaxCapacity, scaleMinCapacity]\n",
                                      "required": [
                                        "type",
                                        "isEnabled",
                                        "cronExpression"
                                      ],
                                      "properties": {
                                        "isEnabled": {
                                          "type": "string",
                                          "description": "A list of scheduling tasks.\n"
                                        },
                                        "cronExpression": {
                                          "type": "string",
                                          "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                          "example": "0 1 * * *"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "scale"
                                          ],
                                          "description": "Define cron-based scheduled tasks.\n"
                                        },
                                        "scaleTargetCapacity": {
                                          "type": "integer",
                                          "description": "This will set the defined target group capacity when the scheduling task is triggered.\n",
                                          "minimum": 0
                                        },
                                        "scaleMaxCapacity": {
                                          "type": "integer",
                                          "description": "This will set the defined maximum group capacity when the scheduling task is triggered.\n",
                                          "minimum": 0
                                        },
                                        "scaleMinCapacity": {
                                          "type": "integer",
                                          "description": "This will set the defined maximum group capacity when the scheduling task is triggered.\n",
                                          "minimum": 0
                                        }
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "title": "Scale Up Scheduled Task",
                                      "description": "This is a scheduled task that will allow to add VMs to the group's target capacity by a specific count.\n",
                                      "required": [
                                        "adjustment",
                                        "type",
                                        "isEnabled",
                                        "cronExpression"
                                      ],
                                      "properties": {
                                        "isEnabled": {
                                          "type": "string",
                                          "description": "A list of scheduling tasks.\n"
                                        },
                                        "cronExpression": {
                                          "type": "string",
                                          "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                          "example": "0 1 * * *"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "scaleUp"
                                          ],
                                          "description": "Defines the type of the scheduled task.\n"
                                        },
                                        "adjustment": {
                                          "type": "integer",
                                          "description": "This will increase the target capacity by the defined amount when the scheduling task is triggered.\n",
                                          "minimum": 1,
                                          "example": 1
                                        }
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "title": "Scale Down Scheduled Task",
                                      "description": "This is a scheduled task that will allow to remove VMs from the group's target capacity by a specific count.\n",
                                      "required": [
                                        "adjustment",
                                        "type",
                                        "isEnabled",
                                        "cronExpression"
                                      ],
                                      "properties": {
                                        "isEnabled": {
                                          "type": "string",
                                          "description": "A list of scheduling tasks.\n"
                                        },
                                        "cronExpression": {
                                          "type": "string",
                                          "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                          "example": "0 1 * * *"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "scaleDown"
                                          ],
                                          "description": "Defines the type of the scheduled task.\n"
                                        },
                                        "adjustment": {
                                          "type": "integer",
                                          "description": "This will decrease the target capacity by the defined amount when the scheduling task is triggered.\n",
                                          "minimum": 1,
                                          "example": 1
                                        }
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "title": "Scale Up Percentage Scheduled Task",
                                      "description": "This is a scheduled task that will allow to add VMs to the group's target capacity by a percentage of the group's current target.\n",
                                      "required": [
                                        "type",
                                        "isEnabled",
                                        "cronExpression",
                                        "adjustmentPercentage"
                                      ],
                                      "properties": {
                                        "isEnabled": {
                                          "type": "string",
                                          "description": "A list of scheduling tasks.\n"
                                        },
                                        "cronExpression": {
                                          "type": "string",
                                          "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                          "example": "0 1 * * *"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "scaleUpPercentage"
                                          ],
                                          "description": "Defines the type of the scheduled task.\n"
                                        },
                                        "adjustmentPercentage": {
                                          "type": "integer",
                                          "description": "This will increase the target capacity by the defined percentage value when the scheduling task is triggered.\nThis will set the target capacity by the defined percentage of the current target when the scheduling task triggers.\n",
                                          "minimum": 1,
                                          "maximum": 100
                                        }
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "title": "Scale Down Percentage Scheduled Task",
                                      "description": "This is a scheduled task that will allow to remove VMs from the group's target capacity by a percentage of the group's current target.\n",
                                      "required": [
                                        "adjustmentPercentage",
                                        "type",
                                        "isEnabled",
                                        "cronExpression"
                                      ],
                                      "properties": {
                                        "isEnabled": {
                                          "type": "string",
                                          "description": "A list of scheduling tasks.\n"
                                        },
                                        "cronExpression": {
                                          "type": "string",
                                          "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                          "example": "0 1 * * *"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "percentageScaleDown"
                                          ],
                                          "description": "Defines the type of the scheduled task.\n"
                                        },
                                        "adjustmentPercentage": {
                                          "type": "integer",
                                          "description": "This will decrease the target capacity by the defined percentage value when the scheduling task is triggered.\n",
                                          "minimum": 1,
                                          "maximum": 100
                                        }
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "title": "Deployment Scheduled Task",
                                      "description": "This is a scheduled task that will allow the deployment of an Elastigroup.\n",
                                      "required": [
                                        "batchSizePercentage",
                                        "gracePeriod",
                                        "type",
                                        "isEnabled",
                                        "cronExpression"
                                      ],
                                      "properties": {
                                        "isEnabled": {
                                          "type": "string",
                                          "description": "A list of scheduling tasks.\n"
                                        },
                                        "cronExpression": {
                                          "type": "string",
                                          "description": "A valid cron expression.\nThe cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                          "example": "0 1 * * *"
                                        },
                                        "type": {
                                          "type": "string",
                                          "enum": [
                                            "deployment"
                                          ],
                                          "description": "Defines the type of the scheduled task.\n"
                                        },
                                        "batchSizePercentage": {
                                          "type": "integer",
                                          "description": "Indicates the timeout (in seconds) to wait until the VM becomes healthy, based on the healthCheckType.\n",
                                          "minimum": 1,
                                          "maximum": 100
                                        },
                                        "gracePeriod": {
                                          "type": "integer",
                                          "description": "The number of seconds the timeout waits until the instance becomes healthy based on the healthCheckType.\n",
                                          "minimum": 1
                                        }
                                      }
                                    }
                                  ]
                                }
                              }
                            }
                          },
                          "integrations": {
                            "type": "object",
                            "title": "Elastigroup Integrations",
                            "description": "Configure integrations for the VMs in the Elastigroup.\n",
                            "properties": {
                              "azureDns": {
                                "description": "Configure DNS zones for the VMs in the Elastigroup.\n[Read more](https://docs.flexera.com/spot/elastigroup/features-azure/dns)\n",
                                "type": "object",
                                "required": [
                                  "dnsZones"
                                ],
                                "properties": {
                                  "dnsZones": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "title": "Azure DNS",
                                      "required": [
                                        "type",
                                        "resourceGroup",
                                        "name",
                                        "recordSets"
                                      ],
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "description": "The type of DNS zone. Currently, only public is supported.\n",
                                          "enum": [
                                            "public"
                                          ],
                                          "example": "public"
                                        },
                                        "resourceGroup": {
                                          "type": "string",
                                          "description": "The resource group name of the DNS zone.\n",
                                          "example": "myResourceGroup"
                                        },
                                        "name": {
                                          "type": "string",
                                          "description": "The name of the DNS zone.\n",
                                          "example": "myDnsName"
                                        },
                                        "recordSets": {
                                          "type": "array",
                                          "description": "The record sets of virtual machine IPs to add to the DNS.",
                                          "items": {
                                            "type": "object",
                                            "title": "Record Sets",
                                            "properties": {
                                              "name": {
                                                "type": "string",
                                                "example": "myRecordSet"
                                              }
                                            }
                                          }
                                        },
                                        "spotAccountId": {
                                          "type": "string",
                                          "description": "For cross-subscription shared DNS zones, this is the Spot account ID of the Azure subscription in the DNS zone.\n"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "insights": {
                                "type": "object",
                                "description": "Configure Azure Insights for Elastigroup VMs.\n",
                                "required": [
                                  "isEnabled",
                                  "dataCollectionRuleId"
                                ],
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "description": "Enable insights for the VMs in the Elastigroup.\n"
                                  },
                                  "dataCollectionRuleId": {
                                    "type": "string",
                                    "description": "The ID of the data collection rule to be associated with the VMs in the Elastigroup.",
                                    "example": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Insights/dataCollectionRules/myDataCollectionRule"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/group"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1group/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:compute:group"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Elastigroups",
        "description": "List Elastigroup clusters.\n",
        "operationId": "elastigroupAzureSpotVmsListAll",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "name",
            "example": "TestGroup",
            "description": "Filters to find the Elastigroup via a specific name.\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "region",
            "example": "eastus",
            "description": "Filters to find all the groups in a specific region.\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/group"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Elasitgroup Azure Spot VMs",
                                "required": [
                                  "name",
                                  "region",
                                  "resourceGroupName",
                                  "capacity",
                                  "strategy",
                                  "compute"
                                ],
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "example": "sig-123456789",
                                    "readOnly": true,
                                    "description": "Azure Elastigroup ID\n"
                                  },
                                  "name": {
                                    "type": "string",
                                    "example": "spotinst-group",
                                    "description": "Azure Elastigroup Name\n"
                                  },
                                  "description": {
                                    "type": "string",
                                    "example": "This is my example elastigroup",
                                    "description": "Describe your Azure Elastigroup\n"
                                  },
                                  "region": {
                                    "type": "string",
                                    "example": "westus2",
                                    "description": "The Azure region your Elastigroup will be created in.\n"
                                  },
                                  "resourceGroupName": {
                                    "type": "string",
                                    "example": "spotinst-azure",
                                    "description": "Name of the Resource Group for Elastigroup.\n"
                                  },
                                  "capacity": {
                                    "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D~1capacity/put/requestBody/content/application~1json/schema/allOf/0/properties/capacity"
                                  },
                                  "strategy": {
                                    "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/strategy"
                                  },
                                  "scaling": {
                                    "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/scaling"
                                  },
                                  "compute": {
                                    "type": "object",
                                    "title": "Elastigroup Compute",
                                    "description": "Compute settings for Elastigroup.\n",
                                    "required": [
                                      "vmSizes",
                                      "os",
                                      "launchSpecification"
                                    ],
                                    "properties": {
                                      "vmSizes": {
                                        "type": "object",
                                        "description": "amount of time to be unhealthy before a replacement is triggered\n",
                                        "properties": {
                                          "odSizes": {
                                            "type": "array",
                                            "description": "Available On-Demand sizes.\n",
                                            "items": {
                                              "type": "string",
                                              "example": "standard_a1_v1"
                                            }
                                          },
                                          "spotSizes": {
                                            "type": "array",
                                            "description": "Available spot VM sizes.\n",
                                            "items": {
                                              "type": "string",
                                              "example": "standard_a2_v2"
                                            }
                                          },
                                          "preferredSpotSizes": {
                                            "type": "array",
                                            "description": "Prioritize Spot VM sizes when launching Spot VMs for the group.\n<a style=color:red>Must be a sublist of compute.vmSizes.spotSizes. </a>\n",
                                            "items": {
                                              "type": "string",
                                              "example": "standard_a2_v2"
                                            }
                                          },
                                          "spotSizeAttributes": {
                                            "$ref": "#/paths/~1azure~1compute~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/compute/properties/vmSizes/properties/spotSizeAttributes"
                                          },
                                          "excludedVmSizes": {
                                            "type": "array",
                                            "description": "Exclude these spot VM sizes when using attribute-based VM sizes.\n",
                                            "example": [
                                              "standard_a2_v2",
                                              "standard_d2s_v3"
                                            ],
                                            "items": {
                                              "type": "string"
                                            }
                                          }
                                        }
                                      },
                                      "os": {
                                        "type": "string",
                                        "example": "Linux",
                                        "description": "Type of operating system.\n",
                                        "enum": [
                                          "Linux",
                                          "Windows"
                                        ]
                                      },
                                      "launchSpecification": {
                                        "type": "object",
                                        "properties": {
                                          "vmNamePrefix": {
                                            "type": "string",
                                            "description": "Set a VM name prefix to be used for all launched VMs and the VM resources.\n* The prefix value should comply with the following limitations: \n  *  A maximal length of 25 characters.\n  * The prefix can’t contain spaces, control characters, or these characters: ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } | ; : . ' \" , < > / ?\n  * The VM prefix can't end with a hyphen.\n",
                                            "example": "prefix"
                                          },
                                          "security": {
                                            "type": "object",
                                            "description": "Specifies the Security related profile settings for the virtual machine.\n",
                                            "properties": {
                                              "securityType": {
                                                "type": "string",
                                                "description": "Security type refers to the different security features of a virtual machine.\nSecurity features like Trusted launch virtual machines help to improve the security of Azure generation 2 virtual machines.\n",
                                                "enum": [
                                                  "Standard",
                                                  "TrustedLaunch",
                                                  "ConfidentialVM"
                                                ],
                                                "example": "TrustedLaunch"
                                              },
                                              "secureBootEnabled": {
                                                "type": "boolean",
                                                "description": "Specifies whether secure boot should be enabled on the virtual machine.\n",
                                                "example": true
                                              },
                                              "vTpmEnabled": {
                                                "type": "boolean",
                                                "description": "Specifies whether vTPM should be enabled on the virtual machine.\n",
                                                "example": true
                                              },
                                              "confidentialOsDiskEncryption": {
                                                "type": "boolean",
                                                "description": "Confidential disk encryption binds the disk encryption keys to the VM's TPM, ensuring VM-only access.\nThe security type must be \"ConfidentialVM\" to enable defining this preference as “true”.\n",
                                                "example": false
                                              },
                                              "encryptionAtHost": {
                                                "type": "boolean",
                                                "description": "Enables host encryption for the virtual machine. Encryption at host can only be enabled if this property is set to true for the resource.\n",
                                                "example": true
                                              }
                                            }
                                          },
                                          "licenseType": {
                                            "type": "string",
                                            "description": "Enables Azure Hybrid Benefit.\nAccepted values: Windows_Client, Windows_Server, RHEL_BYOS, SLES_BYOS.\n",
                                            "example": "Windows_Server"
                                          },
                                          "customData": {
                                            "type": "string",
                                            "format": "byte",
                                            "description": "This value will hold the YAML in base64 and will be executed upon VM launch.\n",
                                            "example": ""
                                          },
                                          "userData": {
                                            "type": "string",
                                            "description": "Define a set of scripts or other metadata that's inserted to an Azure virtual machine at provision time. (Base64 encoded)\n",
                                            "example": "IyEvYmluL2Jhc2gKZWNobyAidGVzdCI"
                                          },
                                          "image": {
                                            "type": "object",
                                            "description": "Image of VM. An image is a template for creating new VMs.\n",
                                            "properties": {
                                              "marketplace": {
                                                "type": "object",
                                                "description": "Select an image from Azure's Marketplace image catalogue\\\nRequired if custom image or gallery image are not specified.\n",
                                                "properties": {
                                                  "publisher": {
                                                    "type": "string",
                                                    "description": "Image publisher.\n",
                                                    "example": "OpenLogic"
                                                  },
                                                  "offer": {
                                                    "type": "string",
                                                    "description": "Name of image to use.\n",
                                                    "example": "CentOS"
                                                  },
                                                  "sku": {
                                                    "type": "string",
                                                    "description": "Image's Stock Keeping Unit, which is the specific version of the image.\n",
                                                    "example": "7.3"
                                                  },
                                                  "version": {
                                                    "type": "string",
                                                    "description": "Image's version. if version not provided we use \"latest\"\n",
                                                    "default": "lastest",
                                                    "example": "7.3-1611"
                                                  }
                                                }
                                              },
                                              "custom": {
                                                "type": "object",
                                                "description": "Custom image to launch Elastigroup with.\n",
                                                "properties": {
                                                  "resourceGroupName": {
                                                    "type": "string",
                                                    "description": "Name of Resource Group for custom image.\n",
                                                    "example": "spotinst-azure"
                                                  },
                                                  "name": {
                                                    "type": "string",
                                                    "description": "Name of the custom image.\n",
                                                    "example": "custom-image-name"
                                                  }
                                                }
                                              },
                                              "gallery": {
                                                "title": "Gallery",
                                                "type": "object",
                                                "description": "Gallery image to launch Elastigroup with. Required if custom image or marketplace image are not specified.\n",
                                                "properties": {
                                                  "resourceGroupName": {
                                                    "title": "Resource Group Name",
                                                    "description": "Name of Resource Group for custom image\n",
                                                    "type": "string",
                                                    "example": "spotinst-azure"
                                                  },
                                                  "galleryName": {
                                                    "title": "Gallery Name",
                                                    "description": "Name of the gallery.\n",
                                                    "type": "string",
                                                    "example": "gallery-name"
                                                  },
                                                  "imageName": {
                                                    "title": "Image Name",
                                                    "description": "Name of the gallery image.\n",
                                                    "type": "string",
                                                    "example": "gallery-image-name"
                                                  },
                                                  "version": {
                                                    "title": "Version",
                                                    "description": "Image's version. Can be in the format x.x.x or 'latest'.\n",
                                                    "type": "string",
                                                    "example": "0.0.1"
                                                  },
                                                  "spotAccountId": {
                                                    "title": "Spot Account ID",
                                                    "description": "The Spot account ID that connected to the Azure subscription to which the gallery belongs. Relevant only in case of cross-subscription shared galleries. [Read more](https://docs.flexera.com/spot/elastigroup/features-azure/shared-image-galleries) about cross-subscription shared galleries in Elastigroup.",
                                                    "type": "string",
                                                    "example": "act-123456789"
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          "network": {
                                            "title": "Network",
                                            "description": "Define the Virtual Network and Subnet for your Elastigroup.",
                                            "type": "object",
                                            "required": [
                                              "resourceGroupName",
                                              "virtualNetworkName",
                                              "networkInterfaces"
                                            ],
                                            "properties": {
                                              "resourceGroupName": {
                                                "title": "Resource Group Name",
                                                "description": "Vnet Resource Group Name",
                                                "type": "string",
                                                "example": "subnetResourceGroup"
                                              },
                                              "virtualNetworkName": {
                                                "title": "Virtual Network Name",
                                                "description": "Virtual Network",
                                                "type": "string",
                                                "example": "vname"
                                              },
                                              "networkInterfaces": {
                                                "title": "Virtual Network Name",
                                                "description": "Virtual Network",
                                                "type": "array",
                                                "items": {
                                                  "type": "object",
                                                  "required": [
                                                    "isPrimary",
                                                    "subnetName"
                                                  ],
                                                  "properties": {
                                                    "isPrimary": {
                                                      "title": "Is Primary Criteria",
                                                      "description": "Defines whether the network interface is primary or not.",
                                                      "type": "boolean",
                                                      "example": true
                                                    },
                                                    "subnetName": {
                                                      "title": "Subnet Name",
                                                      "description": "Subnet name",
                                                      "type": "string",
                                                      "example": "testSubnet"
                                                    },
                                                    "assignPublicIp": {
                                                      "title": "Assign Public IP",
                                                      "description": "Assign public IP",
                                                      "type": "boolean",
                                                      "example": true
                                                    },
                                                    "publicIpSku": {
                                                      "title": "Type of Public Ip",
                                                      "description": "Required if assignPublicIp=true values=[STANDARD/BASIC]",
                                                      "type": "string",
                                                      "example": "STANDARD"
                                                    },
                                                    "securityGroup": {
                                                      "title": "Security Group",
                                                      "description": "Security Group",
                                                      "type": "object",
                                                      "properties": {
                                                        "name": {
                                                          "title": "Name",
                                                          "description": "Requires valid security group name. Required if security group is specified.",
                                                          "type": "string",
                                                          "example": "test"
                                                        },
                                                        "resourceGroupName": {
                                                          "title": "Resource Group Name",
                                                          "description": "Requires valid resource group name. Required if security group is specified.",
                                                          "type": "string",
                                                          "example": "test"
                                                        }
                                                      }
                                                    },
                                                    "publicIps": {
                                                      "description": "Defined a pool of Public Ips (from Azure), that will be associated to the network interface. We will associate one public ip per instance until the pool is exhausted, in which case, we will create a new one.",
                                                      "type": "array",
                                                      "items": {
                                                        "type": "object",
                                                        "required": [
                                                          "resourceGroupName",
                                                          "name"
                                                        ],
                                                        "properties": {
                                                          "resourceGroupName": {
                                                            "description": "The resource group of the public ip.",
                                                            "type": "string",
                                                            "example": "resourceGroup"
                                                          },
                                                          "name": {
                                                            "description": "The name of the public ip.",
                                                            "type": "string",
                                                            "example": "name"
                                                          }
                                                        }
                                                      }
                                                    },
                                                    "enableIPForwarding": {
                                                      "title": "Enable IP Forwarding",
                                                      "description": "Enable IP Forwarding",
                                                      "type": "boolean",
                                                      "example": true
                                                    },
                                                    "additionalIpConfigurations": {
                                                      "title": "Additional IP Configurations",
                                                      "description": "Additional configuration of network interface",
                                                      "type": "array",
                                                      "items": {
                                                        "type": "object",
                                                        "properties": {
                                                          "name": {
                                                            "title": "Name",
                                                            "description": "Required if additionalConfiguration has been specified.",
                                                            "type": "string",
                                                            "example": "test"
                                                          },
                                                          "privateIpAddressVersion": {
                                                            "title": "Private IP Address Version",
                                                            "description": "Possible values:\n+ IPv4\n+ IPv6",
                                                            "default": "IPv4"
                                                          }
                                                        }
                                                      }
                                                    },
                                                    "privateIpAddresses": {
                                                      "type": "array",
                                                      "description": "A list with unique items that every item is a valid IP",
                                                      "items": {
                                                        "type": "string",
                                                        "example": [
                                                          "172.23.4.20"
                                                        ]
                                                      }
                                                    },
                                                    "applicationSecurityGroups": {
                                                      "description": "List of Application Security Groups that will be associated to the primary ip configration of the network interface.",
                                                      "type": "array",
                                                      "items": {
                                                        "type": "object",
                                                        "required": [
                                                          "resourceGroupName",
                                                          "name"
                                                        ],
                                                        "properties": {
                                                          "resourceGroupName": {
                                                            "description": "The resource group of the Application Security Group.",
                                                            "type": "string",
                                                            "example": "AsgResourceGroup"
                                                          },
                                                          "name": {
                                                            "description": "The name of the Application Security group",
                                                            "type": "string",
                                                            "example": "AsgName"
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          "login": {
                                            "type": "object",
                                            "description": "Set admin access for accessing your VMs. Password/SSH is required for Linux.\n",
                                            "properties": {
                                              "userName": {
                                                "type": "string",
                                                "description": "user name for admin access to VMs.\\\nLogin can be set:\n* for windows: compute.launchSpecification.login.password\n* for linux: compute.launchSpecification.login.sshPublicKey\n\nJust user name, without pwd or SSH key\n",
                                                "example": "spotinst"
                                              },
                                              "sshPublicKey": {
                                                "type": "string",
                                                "description": "SSH for admin access to Linux VMs.\\\nOptional for Linux.\n",
                                                "example": "ssh-rsa"
                                              },
                                              "password": {
                                                "type": "string",
                                                "writeOnly": true,
                                                "description": "Password for admin access to Windows VMs.\\\nRequired for Windows.\n"
                                              }
                                            }
                                          },
                                          "loadBalancersConfig": {
                                            "type": "object",
                                            "description": "Configure a Load Balancer.\n",
                                            "properties": {
                                              "loadBalancers": {
                                                "type": "array",
                                                "description": "Add a load balancer. For Azure Gateway, each Backend Pool is a separate load balancer.\n",
                                                "items": {
                                                  "type": "object",
                                                  "properties": {
                                                    "type": {
                                                      "type": "string",
                                                      "description": "The type of load balancer.\n",
                                                      "enum": [
                                                        "loadBalancer",
                                                        "applicationGateway"
                                                      ],
                                                      "example": "loadBalancer"
                                                    },
                                                    "resourceGroupName": {
                                                      "type": "string",
                                                      "description": "The Resource Group name of the Load Balancer.\n",
                                                      "example": "testResourceGroup"
                                                    },
                                                    "name": {
                                                      "type": "string",
                                                      "description": "Name of the Application Gateway/Load Balancer\n",
                                                      "example": "testLoadBalancer"
                                                    },
                                                    "sku": {
                                                      "type": "string",
                                                      "description": "* if type is LoadBalancer then possible values are:\n * “Standard\"\n * Basic”\n* if ApplicationGateway then possible values are:\n * “Standard_Large”\n * “Standard_Medium”\n * “Standard_Small”\n * “Standard_v2\n * “WAF_Large”\n * “WAF_Medium\"\n * “WAF_v2\"\n",
                                                      "example": "Standard"
                                                    },
                                                    "backendPoolNames": {
                                                      "type": "array",
                                                      "items": {
                                                        "type": "string"
                                                      },
                                                      "description": "Name of the Backend Pool to register the Elastigroup VMs to.\\\nEach Backend Pool is a separate load balancer.\\\nRequired if Type is APPLICATION_GATEWAY.\n",
                                                      "example": [
                                                        "testBackendPool1",
                                                        "testBackendPool2"
                                                      ]
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          "managedServiceIdentities": {
                                            "type": "array",
                                            "writeOnly": true,
                                            "description": "Add a user-assigned managed identity to the VMs in the cluster.\n",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "name": {
                                                  "type": "string",
                                                  "description": "name of the managed identity\n",
                                                  "example": "mySI2"
                                                },
                                                "resourceGroupName": {
                                                  "type": "string",
                                                  "description": "The Resource Group that the user-assigned managed identity resides in.\n",
                                                  "example": "myResourceGroup"
                                                }
                                              }
                                            }
                                          },
                                          "shutdownScript": {
                                            "type": "string",
                                            "format": "byte",
                                            "writeOnly": true,
                                            "example": "IyEvdXNyL2Jpbi9lbnYgYmFzaAoiR29vZGJ5ZSBvbGQgaW5zdGFuY2Ui",
                                            "description": "shutdown script for the group. Value should be passed as a string encoded at Base64 only\n"
                                          },
                                          "tags": {
                                            "type": "array",
                                            "description": "Key-Value pairs for VMs in the Elastigroup.\n",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "tagKey": {
                                                  "type": "string",
                                                  "description": "Tag Key for Vms in Elastigroup.\n",
                                                  "example": "env"
                                                },
                                                "tagValue": {
                                                  "type": "string",
                                                  "description": "Tag Value for VMs in Elastigroup.\n",
                                                  "example": "staging"
                                                }
                                              }
                                            }
                                          },
                                          "extensions": {
                                            "type": "array",
                                            "description": "List of objects for azure extensions\n",
                                            "items": {
                                              "type": "object",
                                              "required": [
                                                "name",
                                                "type",
                                                "publisher",
                                                "apiVersion",
                                                "minorVersionAutoUpgrade"
                                              ],
                                              "properties": {
                                                "name": {
                                                  "type": "string",
                                                  "description": "Required on compute.launchSpecification.extensions object\n",
                                                  "example": "extensionName"
                                                },
                                                "type": {
                                                  "type": "string",
                                                  "description": "Required on compute.launchSpecification.extensions object\n",
                                                  "example": "customScript"
                                                },
                                                "publisher": {
                                                  "type": "string",
                                                  "description": "Required on compute.launchSpecification.extensions object\n",
                                                  "example": "Microsoft.Azure.Extensions"
                                                },
                                                "apiVersion": {
                                                  "type": "string",
                                                  "description": "The API version of the extension. Required if extension specified.\n",
                                                  "example": "2.0"
                                                },
                                                "minorVersionAutoUpgrade": {
                                                  "type": "boolean",
                                                  "description": "Required on compute.launchSpecification.extensions object\n",
                                                  "example": true
                                                },
                                                "publicSettings": {
                                                  "type": "object",
                                                  "description": "Object for public settings\n"
                                                },
                                                "protectedSettings": {
                                                  "type": "object",
                                                  "description": "Object for protected settings\n"
                                                },
                                                "enableAutomaticUpgrade": {
                                                  "title": "enable automatic upgrade",
                                                  "description": "Indicates whether the extension should be automatically upgraded by the platform if there is a newer version of the extension available.\n",
                                                  "type": "boolean",
                                                  "example": false
                                                },
                                                "protectedSettingsFromKeyVault": {
                                                  "title": "Protected Settings from key vault",
                                                  "description": "The extensions protected settings that are passed by reference, and consumed from key vault.\n",
                                                  "type": "object",
                                                  "required": [
                                                    "sourceVault",
                                                    "secretUrl"
                                                  ],
                                                  "properties": {
                                                    "sourceVault": {
                                                      "title": "sourceVault",
                                                      "type": "string",
                                                      "description": "The relative URL of the Key Vault containing the secret.\n",
                                                      "example": "/subscriptions/1234-1234-1234/resourceGroups/rg_test/providers/Microsoft.KeyVault/vaults/testKeyVault"
                                                    },
                                                    "secretUrl": {
                                                      "title": "secretUrl",
                                                      "type": "string",
                                                      "description": "The URL referencing a secret in a Key Vault.\n",
                                                      "example": "https://testKeyVault.vault.azure.net/secrets/SecretTest/123456"
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          "dataDisks": {
                                            "type": "array",
                                            "description": "list of data disks to be attached to the vms in the group.\n",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "sizeGB": {
                                                  "type": "integer",
                                                  "description": "The size of the data disk in GB, Required if dataDisks is specified.\n",
                                                  "minimum": 1,
                                                  "maximum": 1023,
                                                  "example": 1
                                                },
                                                "lun": {
                                                  "type": "integer",
                                                  "description": "The lun of the data disk, Required if dataDisks is specified.\n",
                                                  "example": 1
                                                },
                                                "type": {
                                                  "type": "string",
                                                  "description": "The type of the data disk\n",
                                                  "enum": [
                                                    "Standard_LRS",
                                                    "Premium_LRS",
                                                    "StandardSSD_LRS",
                                                    "StandardSSD_ZRS",
                                                    "Premium_ZRS"
                                                  ],
                                                  "example": "Standard_LRS"
                                                }
                                              }
                                            }
                                          },
                                          "osDisk": {
                                            "type": "object",
                                            "description": "Specify OS disk specification other than default.\n",
                                            "properties": {
                                              "type": {
                                                "type": "string",
                                                "description": "The type of the OS disk.\n",
                                                "enum": [
                                                  "Standard_LRS",
                                                  "Premium_LRS",
                                                  "StandardSSD_LRS",
                                                  "StandardSSD_ZRS",
                                                  "Premium_ZRS"
                                                ],
                                                "example": "Standard_LRS"
                                              },
                                              "sizeGB": {
                                                "type": "integer",
                                                "description": "The size of the data disk in GB, Required if dataDisks is specified.\n",
                                                "minimum": 1,
                                                "maximum": 1023,
                                                "example": 30
                                              }
                                            }
                                          },
                                          "bootDiagnostics": {
                                            "type": "object",
                                            "description": "Will enable boot diagnostics in Azure when a new VM is launched",
                                            "required": [
                                              "isEnabled",
                                              "type"
                                            ],
                                            "properties": {
                                              "isEnabled": {
                                                "type": "boolean",
                                                "description": "Allows you to enable and disable the configuration of boot diagnostics at launch"
                                              },
                                              "type": {
                                                "type": "string",
                                                "description": "Defines the type of storage on VM launch  in Azure.",
                                                "enum": [
                                                  "managed",
                                                  "unmanaged"
                                                ]
                                              },
                                              "storageUri": {
                                                "type": "string",
                                                "description": "The storage URI that is used if type is unmanaged. The storage URI must follow the blob storage URI format (\"https://<blobstoragename>.blob.core.windows.net/\"). StorageUri is required if the type is unmanaged. StorageUri must be ‘null’ in case the boot diagnostics type is managed"
                                              }
                                            },
                                            "example": {
                                              "isEnabled": true,
                                              "type": "unmanaged",
                                              "storageUri": "https://example.blob.core.windows.net/"
                                            }
                                          },
                                          "secrets": {
                                            "title": "secrets",
                                            "type": "array",
                                            "description": "Set of certificates that should be installed the VM\n",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "sourceVault": {
                                                  "type": "object",
                                                  "description": "The key vault reference, contains the required certificates\n",
                                                  "required": [
                                                    "resourceGroupName",
                                                    "name"
                                                  ],
                                                  "properties": {
                                                    "resourceGroupName": {
                                                      "type": "string",
                                                      "description": "The resource group name of the key vault\n"
                                                    },
                                                    "name": {
                                                      "type": "string",
                                                      "description": "The name of the key vault\n"
                                                    }
                                                  }
                                                },
                                                "vaultCertificates": {
                                                  "type": "array",
                                                  "description": "The required certificate references\n",
                                                  "items": {
                                                    "type": "object",
                                                    "required": [
                                                      "certificateUrl",
                                                      "certificateStore"
                                                    ],
                                                    "properties": {
                                                      "certificateUrl": {
                                                        "type": "string",
                                                        "description": "The URL of the certificate under the key vault\n"
                                                      },
                                                      "certificateStore": {
                                                        "type": "string",
                                                        "description": "The certificate store directory the VM. The directory is created in the LocalMachine account.\n* This field is required only when using windows OS type\n* This field must be ‘null’ when the OS type is Linux\n"
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      },
                                      "zones": {
                                        "type": "array",
                                        "description": "List of Azure Availability Zones in the defined region; If not defined, Virtual machines will be launched regionally.",
                                        "items": {
                                          "enum": [
                                            "1",
                                            "2",
                                            "3"
                                          ],
                                          "type": "string",
                                          "example": "1"
                                        }
                                      },
                                      "preferredZones": {
                                        "type": "array",
                                        "description": "The AZs to prioritize when launching VMs. If no markets are available in the Preferred AZs, VMs are launched in the non-preferred AZs.\n<a style=color:red>Must be a sublist of compute.zones.</a>\n",
                                        "items": {
                                          "enum": [
                                            "1",
                                            "2",
                                            "3"
                                          ],
                                          "type": "string",
                                          "example": "1"
                                        }
                                      }
                                    }
                                  },
                                  "health": {
                                    "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/health"
                                  },
                                  "scheduling": {
                                    "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/scheduling"
                                  },
                                  "integrations": {
                                    "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/integrations"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2018-10-10T10:50:29.000+0000"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2018-11-01T10:50:29.000+0000"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:compute:group"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/status": {
      "get": {
        "summary": "Get Elastigroup Status",
        "description": "Get status of Elastigroup cluster.",
        "operationId": "elastigroupAzureSpotVmsGetStatus",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "status": {
                                    "type": "string",
                                    "example": "ready",
                                    "enum": [
                                      "ready",
                                      "deploying",
                                      "replacing",
                                      "unsynced"
                                    ]
                                  },
                                  "vms": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "vmName": {
                                          "type": "string",
                                          "example": "vm-12345"
                                        },
                                        "region": {
                                          "type": "string",
                                          "example": "eastus"
                                        },
                                        "vmSize": {
                                          "type": "string",
                                          "example": "standard_a1_v2"
                                        },
                                        "lifeCycle": {
                                          "type": "string",
                                          "example": "spot"
                                        },
                                        "os": {
                                          "type": "string",
                                          "example": "Linux"
                                        },
                                        "privateIp": {
                                          "type": "integer",
                                          "example": "192.0.0.1"
                                        },
                                        "publicIp": {
                                          "type": "integer",
                                          "example": "183.123.67.79"
                                        },
                                        "provisioningState": {
                                          "type": "string",
                                          "example": "succeeded"
                                        },
                                        "powerState": {
                                          "type": "string",
                                          "example": "running"
                                        },
                                        "createdAt": {
                                          "type": "string",
                                          "example": "2020-06-18T12:02:49.000Z"
                                        }
                                      }
                                    }
                                  },
                                  "suspendedProcesses": {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "object",
                                          "properties": {
                                            "name": {
                                              "type": "string",
                                              "example": "autoHealing"
                                            },
                                            "expiresAt": {
                                              "type": "string",
                                              "example": "2020-11-10T18:43:52.000Z"
                                            }
                                          }
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "name": {
                                              "type": "string",
                                              "example": "signalTimeout"
                                            }
                                          }
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "name": {
                                              "type": "string",
                                              "example": "autoScale"
                                            }
                                          }
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "name": {
                                              "type": "string",
                                              "example": "scaleDown"
                                            }
                                          }
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "name": {
                                              "type": "string",
                                              "example": "syncStrategy"
                                            },
                                            "expiresAt": {
                                              "type": "string",
                                              "example": "2020-11-10T17:43:52.000Z"
                                            }
                                          }
                                        }
                                      ]
                                    },
                                    "example": [
                                      {
                                        "name": "autoHealing",
                                        "expiresAt": "2020-11-10T18:43:52.000Z"
                                      },
                                      {
                                        "name": "signalTimeout"
                                      },
                                      {
                                        "name": "autoScale"
                                      },
                                      {
                                        "name": "scaleDown"
                                      },
                                      {
                                        "name": "syncStrategy",
                                        "expiresAt": "2020-11-10T17:43:52.000Z"
                                      }
                                    ]
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:compute:group:status"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/vmHealthiness": {
      "get": {
        "summary": "Vm Healthiness",
        "description": "Get a list of vms with health status.",
        "operationId": "elastigroupAzureVmHealthiness",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "groupId",
            "example": "sig-123123",
            "description": "Elastigroup's ID\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Vm Healthiness Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/group/sig-123123/vmHealthiness"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "vmName": {
                                    "type": "string",
                                    "description": "Vm Name",
                                    "example": "vm-123456789"
                                  },
                                  "lifeCycle": {
                                    "type": "string",
                                    "description": "Life Cycle",
                                    "enum": [
                                      "SPOT",
                                      "ON_DEMAND"
                                    ],
                                    "example": "SPOT"
                                  },
                                  "healthStatus": {
                                    "type": "string",
                                    "description": "Health Status",
                                    "enum": [
                                      "HEALTHY",
                                      "UNHEALTHY",
                                      "UNKNOWN"
                                    ],
                                    "example": "HEALTHY"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:compute:group:vmHealthiness"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/suspend": {
      "put": {
        "summary": "Suspend Group",
        "description": "Suspends the Group.\n",
        "operationId": "elastigroupAzureSpotVmsSuspend",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Create Elastigroup Azure Spot VMs Process Suspensions",
                    "required": [
                      "processes"
                    ],
                    "properties": {
                      "processes": {
                        "type": "array",
                        "description": "List of processes to create or update their suspensions\n",
                        "items": {
                          "type": "object",
                          "required": [
                            "name"
                          ],
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Process name to create signal timeout\n",
                              "enum": [
                                "autoHealing",
                                "signalTimeout",
                                "autoScale",
                                "scaleDown",
                                "syncStrategy",
                                "preventiveReplacement"
                              ]
                            },
                            "ttlInMinutes": {
                              "type": "integer",
                              "minimum": 0,
                              "description": "The duration in minutes which the process is suspended for; \\\nif not provided, then it will remain suspended until resumed\n"
                            }
                          }
                        },
                        "example": [
                          {
                            "name": "autoHealing",
                            "ttlInMinute": 120
                          },
                          {
                            "name": "signalTimeout"
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Spot Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/group/sig-12345/suspend?accountId=act-123456789"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/resume": {
      "put": {
        "summary": "Resume Group",
        "description": "Resumes the Group.\n",
        "operationId": "elastigroupAzureSpotVmsResume",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Resume Elastigroup Azure Spot VMs processes",
                    "required": [
                      "processes"
                    ],
                    "properties": {
                      "processes": {
                        "type": "array",
                        "description": "List of processes to cancel their suspensions\n",
                        "items": {
                          "type": "object",
                          "required": [
                            "name"
                          ],
                          "properties": {
                            "name": {
                              "type": "string",
                              "description": "Process name to create signal timeout\n",
                              "enum": [
                                "autoHealing",
                                "signalTimeout",
                                "autoScale",
                                "scaleDown",
                                "syncStrategy",
                                "preventiveReplacement"
                              ]
                            }
                          }
                        },
                        "example": [
                          {
                            "name": "syncStrategy"
                          },
                          {
                            "name": "signalTimeout"
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Spot Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/group/sig-12345/resume?accountId=act-123456789"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/detachVms": {
      "put": {
        "summary": "Detach VMs",
        "description": "Scale down specific virtual machines in Elastigroup cluster.\n",
        "operationId": "elastigroupAzureSpotVmsDetachVms",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "vmsToDetach",
                  "shouldTerminateVms",
                  "shouldDecrementTargetCapacity"
                ],
                "type": "object",
                "properties": {
                  "vmsToDetach": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "vm-0fbd69f960db"
                    },
                    "description": "Array of virtual machine names to detach.\n"
                  },
                  "shouldTerminateVms": {
                    "type": "boolean",
                    "example": true,
                    "description": "Whether to terminate the VMs or not.\n"
                  },
                  "shouldDecrementTargetCapacity": {
                    "type": "boolean",
                    "example": true,
                    "description": "Prevent Elastigroup from scaling back to target capacity when virtual machines are detached.\n"
                  },
                  "shouldDeregisterVmFromLb": {
                    "type": "boolean",
                    "default": true,
                    "example": true,
                    "description": "Indicates whether to deregister the stateful node's VM from any type of load balancer. Will only be applied if the shouldTerminateVms is 'false'\n"
                  },
                  "drainingTimeout": {
                    "type": "string",
                    "example": 300,
                    "description": "The time in seconds to allow the virtual machine be be drained from incoming TCP connections and detached from MLB before terminating it.\n",
                    "default": 120
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "detachedVms": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "vmName": {
                                          "type": "string",
                                          "example": "vm-12345"
                                        },
                                        "region": {
                                          "type": "string",
                                          "example": "eastus"
                                        },
                                        "vmSize": {
                                          "type": "string",
                                          "example": "standard_a1_v2"
                                        },
                                        "lifeCycle": {
                                          "type": "string",
                                          "example": "spot"
                                        },
                                        "os": {
                                          "type": "string",
                                          "example": "Linux"
                                        },
                                        "privateIp": {
                                          "type": "integer",
                                          "example": "192.0.0.1"
                                        },
                                        "publicIp": {
                                          "type": "integer",
                                          "example": "183.123.67.79"
                                        },
                                        "provisioningState": {
                                          "type": "string",
                                          "example": "succeeded"
                                        },
                                        "powerState": {
                                          "type": "string",
                                          "example": "detached"
                                        },
                                        "createdAt": {
                                          "type": "string",
                                          "example": "2020-06-18T12:02:49.000Z"
                                        }
                                      }
                                    }
                                  },
                                  "newVms": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "vmName": {
                                          "type": "string",
                                          "example": "vm-56789"
                                        },
                                        "region": {
                                          "type": "string",
                                          "example": "eastus"
                                        },
                                        "vmSize": {
                                          "type": "string",
                                          "example": "standard_a1_v2"
                                        },
                                        "lifeCycle": {
                                          "type": "string",
                                          "example": "spot"
                                        },
                                        "os": {
                                          "type": "string",
                                          "example": "Linux"
                                        },
                                        "privateIp": {
                                          "type": "integer",
                                          "example": "192.0.0.1"
                                        },
                                        "publicIp": {
                                          "type": "integer",
                                          "example": "183.123.67.79"
                                        },
                                        "provisioningState": {
                                          "type": "string",
                                          "example": "succeeded"
                                        },
                                        "powerState": {
                                          "type": "string",
                                          "example": "running"
                                        },
                                        "createdAt": {
                                          "type": "string",
                                          "example": "2020-06-18T12:02:49.000Z"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:compute:group:detachVms"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/scale/down": {
      "put": {
        "summary": "Scale Down",
        "description": "Scale down virtual machines in Elastigroup cluster.\n",
        "operationId": "elastigroupAzureSpotVmsScaleDown",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "adjustment",
            "example": 5,
            "description": "Number of VMs to scale down\n",
            "schema": {
              "type": "integer",
              "minimum": 1
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D~1status/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/scale/up": {
      "put": {
        "summary": "Scale Up",
        "description": "Scale up virtual machines in Elastigroup cluster.\n",
        "operationId": "elastigroupAzureSpotVmsScaleUp",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "adjustment",
            "example": 5,
            "description": "Number of VMs to scale up\n",
            "schema": {
              "type": "integer",
              "minimum": 1
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D~1status/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/deployment": {
      "post": {
        "summary": "Start Deployment",
        "description": "Deploy the Elastigroup. This triggers a Blue/Green deployment that replaces the existing VMs in the Elastigroup.\n",
        "operationId": "elastigroupAzureSpotVmsCreateDeployment",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "deployment": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "readOnly": true,
                            "example": "sbgd-f331fb8e"
                          },
                          "groupId": {
                            "type": "string",
                            "readOnly": true,
                            "example": "sig-a7aa60cd"
                          },
                          "status": {
                            "type": "string",
                            "readOnly": true,
                            "example": "deploymentStart"
                          },
                          "currentBatch": {
                            "type": "integer",
                            "readOnly": true,
                            "example": 1
                          },
                          "numOfBatches": {
                            "type": "integer",
                            "readOnly": true,
                            "example": 2
                          },
                          "progress": {
                            "type": "object",
                            "readOnly": true,
                            "properties": {
                              "unit": {
                                "type": "string",
                                "example": "percentage"
                              },
                              "value": {
                                "type": "integer",
                                "example": 10
                              }
                            }
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "example": "2020-06-22T11:15:06.614Z"
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "example": "2020-06-22T11:15:06.614Z"
                          },
                          "batchSizePercentage": {
                            "type": "integer",
                            "example": 50,
                            "writeOnly": true,
                            "description": "Indicates (in percentage) the batch size of the deployment (meaning, how many nodes to replace in each batch).\\\nCannot be null.\n",
                            "default": 25,
                            "minimum": 1,
                            "maximum": 100
                          },
                          "gracePeriod": {
                            "type": "integer",
                            "example": 300,
                            "writeOnly": true,
                            "description": "Indicates (in seconds) the timeout to wait until the node becomes healthy.\n",
                            "default": 600,
                            "minimum": 300
                          },
                          "batchMinHealthyPercentage": {
                            "type": "integer",
                            "example": 100,
                            "writeOnly": true,
                            "description": "Indicates the threshold of minimum healthy virtual machines in a single batch.\\\nIf the amount of healthy virtual machines in a single batch is under the threshold, the deployment will fail.\\\nThe value of the parameter should represent the number in percentage (%) of the batch.\n",
                            "default": 50,
                            "minimum": 1,
                            "maximum": 100
                          },
                          "drainingTimeout": {
                            "type": "integer",
                            "example": 120,
                            "writeOnly": true,
                            "description": "Indicates (in seconds) the timeout to drain the instances. Can be null.\\\nDefault - The Elastigroups draining time out or 120.\n",
                            "minimum": 0
                          },
                          "healthCheckTypes": {
                            "type": "array",
                            "description": "Define a health check type. Can be null.\\\nIf no value is set, the deployment will use the group's auto-healing health check.\n",
                            "writeOnly": true,
                            "items": {
                              "type": "string",
                              "enum": [
                                "vmState",
                                "applicationGateway"
                              ]
                            },
                            "example": [
                              "vmState"
                            ]
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D~1deployment/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get All Deployments",
        "description": "Get a list of all the deployments of a specific Elastigroup and the status of each one.\n",
        "operationId": "elastigroupAzureSpotVmsListGroupDeployment",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "LIMIT",
            "example": 14,
            "description": "Limits the number of deployments returned. Default: 5\n",
            "schema": {
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "SORT",
            "example": "createdAt:DESC",
            "description": "Field by which to sort the results. Default: createdAt:DESC\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D~1deployment/post/requestBody/content/application~1json/schema/allOf/0/properties/deployment"
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:compute:group:deployment"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/deployment/{deploymentId}": {
      "get": {
        "summary": "Get Deployment",
        "description": "Get the status of a specific deployment.\n",
        "operationId": "elastigroupAzureSpotVmsDeploymentStatus",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "path",
            "name": "deploymentId",
            "example": "sbgd-9876",
            "description": "The deployment ID you want to query.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1azure~1compute~1group~1%7BgroupId%7D~1deployment/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/deployment/{deploymentId}/details": {
      "get": {
        "summary": "Get Deployment Status",
        "description": "Get the detailed status of a specific deployment. This includes status details per batch and other information.\n",
        "operationId": "elastigroupAzureSpotVmsDeploymentStatusDetails",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "path",
            "name": "deploymentId",
            "example": "sbgd-9876",
            "description": "The deployment ID you want to query.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "detailsOverview": {
                                    "type": "object",
                                    "properties": {
                                      "deploymentId": {
                                        "type": "string",
                                        "example": "sbgd-04c4658b"
                                      },
                                      "numberOfBatches": {
                                        "type": "integer",
                                        "example": 2
                                      },
                                      "currentBatch": {
                                        "type": "integer",
                                        "example": 2
                                      },
                                      "gracePeriod": {
                                        "type": "integer",
                                        "example": 2
                                      },
                                      "blueVms": {
                                        "type": "integer",
                                        "example": 2
                                      },
                                      "greenVms": {
                                        "type": "integer",
                                        "example": 1
                                      },
                                      "description": {
                                        "type": "string",
                                        "example": null
                                      },
                                      "errorMessage": {
                                        "type": "string",
                                        "example": null
                                      },
                                      "createdAt": {
                                        "type": "string",
                                        "example": "2020-06-18T05:33:18.000Z"
                                      },
                                      "healthCheck": {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "example": "instanceState"
                                        }
                                      }
                                    }
                                  },
                                  "batches": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "batch": {
                                          "type": "integer",
                                          "example": 1
                                        },
                                        "blue": {
                                          "type": "object",
                                          "properties": {
                                            "vmName": {
                                              "type": "string",
                                              "example": "i-57ef3cf7a694"
                                            },
                                            "batchNum": {
                                              "type": "integer",
                                              "example": 1
                                            },
                                            "status": {
                                              "type": "string",
                                              "example": "detached"
                                            },
                                            "type": {
                                              "type": "string",
                                              "example": "old"
                                            },
                                            "updatedAt": {
                                              "type": "string",
                                              "example": "2020-06-18T11:16:58.000Z"
                                            }
                                          }
                                        },
                                        "green": {
                                          "type": "object",
                                          "properties": {
                                            "vmName": {
                                              "type": "string",
                                              "example": "i-f2a44ba41875"
                                            },
                                            "batchNum": {
                                              "type": "integer",
                                              "example": 1
                                            },
                                            "status": {
                                              "type": "string",
                                              "example": "detached"
                                            },
                                            "type": {
                                              "type": "string",
                                              "example": "old"
                                            },
                                            "updatedAt": {
                                              "type": "string",
                                              "example": "2020-06-18T11:16:58.000Z"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "events": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "status": {
                                          "type": "string",
                                          "example": "deploymentStart"
                                        },
                                        "eventType": {
                                          "type": "string",
                                          "example": "Batch 1 - Launching New instances"
                                        },
                                        "timestamp": {
                                          "type": "string",
                                          "example": "2020-06-18T05:33:18.000Z"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:compute:deployment:details"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/import/resourceGroup/{resourceGroupName}/scaleSet/{scaleSetName}": {
      "get": {
        "summary": "Import Group From Scale Set",
        "description": "Given a scale set, constructs a valid group configuration based on the scale set and returns it.",
        "operationId": "elastigroupAzureSpotVmsGetAScaleSet",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "resourceGroupName",
            "example": "ExampleResourceGroup",
            "description": "Resource Group Name - Must be valid.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "scaleSetName",
            "example": "MyExampleScaleSetImport",
            "description": "Scale Set Name - Must be valid\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/group/import/resourceGroup/myResourceGroup/scaleSet/myScaleSet"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1group/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "azure:compute:elastigroup:importScaleSet"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/import/resourceGroup/{resourceGroupName}/virtualMachine/{virtualMachineName}": {
      "get": {
        "summary": "Import Group From Virtual Machine",
        "description": "Given a virtual machine, constructs a valid group configuration based on the virtual machine and returns it.\n",
        "operationId": "elastigroupAzureSpotVmsImportFromVirtualMachine",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "required": true,
            "name": "resourceGroupName",
            "example": "ExampleResourceGroup",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "required": true,
            "name": "virtualMachineName",
            "example": "MyExampleVirtualMachineImport",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/group/import/resourceGroup/myResourceGroup/scaleSet/myScaleSet"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1group/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "azure:compute:elastigroup:importVirtualMachine"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/import/resourceGroup/{resourceGroupName}/loadBalancer/{loadBalancerName}/backendPool/{backendPoolName}": {
      "get": {
        "summary": "Import Group From Load Balancer",
        "description": "Given a load balancer, constructs a valid group configuration and returns it.\n",
        "operationId": "elastigroupAzureSpotVmsImportFromLoadBalancer",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "resourceGroupName",
            "example": "ExampleResourceGroup",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "loadBalancerName",
            "example": "MyExampleLoadBalancerImport",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "backendPoolName",
            "example": "MyExampleBackendPoolName",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/group/import/resourceGroup/myResourceGroup/loadBalancer/myLoadBalancer/backendPool/myBackendPool"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1group/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "azure:compute:group:importLoadBalancer"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/import/resourceGroup/{resourceGroupName}/applicationGateway/{applicationGatewayName}/backendPool/{backendPoolName}": {
      "get": {
        "summary": "Import Group From Application Gateway",
        "description": "Given an application gateway, constructs a valid group configuration and returns it.\n",
        "operationId": "elastigroupAzureSpotVmsImportFromApplicationGateway",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "resourceGroupName",
            "example": "ExampleResourceGroup",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "applicationGatewayName",
            "example": "MyExampleApplicationGatewayImport",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "backendPoolName",
            "example": "MyExampleBackendPoolName",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/group/import/resourceGroup/myResourceGroup/applicationGateway/myApplicationGateway/backendPool/myBackendPool"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1group/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "azure:compute:group:importApplicationGateway"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/vm/signal": {
      "post": {
        "summary": "Create VM Signal",
        "description": "The VM signal API is used for notifying Spot about the VM state so that Spot can act accordingly. Supported signals are vmReady – Whenever this signal is sent, Spot will register the instance to the relevant Load Balancer and Application Gateway. vmReadyToShutdown – When this signal is received after a vm is detached; we will immediately terminate the vm. You must define the expected signals for your Elastigroup in the group configuration.",
        "operationId": "elastigroupAzureSpotVmsCreateVMSignal",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "vmName",
                      "signalType",
                      "resourceGroupName"
                    ],
                    "properties": {
                      "vmName": {
                        "type": "string",
                        "example": "vm-123456",
                        "description": "The virtual machine ID the signal refers to.\n"
                      },
                      "signalType": {
                        "type": "string",
                        "enum": [
                          "vmReady",
                          "vmReadyToShutdown"
                        ],
                        "example": "vmReady",
                        "description": "The specific signal you want to trigger.\n"
                      },
                      "resourceGroupName": {
                        "type": "string",
                        "example": "TestResourceGroup",
                        "description": "This is the resource group of the Elastigroup or Stateful Node.\n"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties.\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "e593ff58-067d-4340-92f9-8b1c0bad70d7",
                              "description": "Unique identifier associated with this request.\n"
                            },
                            "url": {
                              "type": "string",
                              "description": "The URL that was used for the request.\n"
                            },
                            "method": {
                              "type": "string",
                              "description": "The HTTP **METHOD** used for the request.\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-06-20T11:35:01.745Z",
                              "description": "When the request was received by Spot.\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes status, type, and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response.\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code.\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/vm/{vmName}/protection": {
      "post": {
        "summary": "Virtual Machine Protection",
        "description": "Protect virtual machines in Elastigroup cluster.\n",
        "operationId": "elastigroupAzureSpotVmsProtect",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "path",
            "name": "vmName",
            "example": "i-f2a44ba41875",
            "description": "The virtual machine name to protect.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "ttlInMinutes",
            "example": 180,
            "description": "Specify a TTL (in minutes) for this protection, meaning, for how long the protection will be valid for. (If null, infinite protection)\n",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Set protection",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "response": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "object",
                          "properties": {
                            "code": {
                              "type": "integer",
                              "example": 200
                            },
                            "message": {
                              "type": "string",
                              "example": "OK"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Virtual Machine Remove Protection",
        "description": "Un-Protect virtual machines in Elastigroup cluster.\n",
        "operationId": "elastigroupAzureSpotVmsUnProtect",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "path",
            "name": "vmName",
            "example": "i-f2a44ba41875",
            "description": "The virtual machine name to remove protection.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Remove protection",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "response": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "object",
                          "properties": {
                            "code": {
                              "type": "integer",
                              "example": 200
                            },
                            "message": {
                              "type": "string",
                              "example": "OK"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/group/{groupId}/logs": {
      "get": {
        "summary": "Get Elastilog",
        "description": "You can fetch a Elastigroup's Elastilog via the Spot API, in order to be able to consume elastilog from various tools used for log storing and analyzing. Logs have retention of 3 months back from today, so minimal fromDate should be up to 3 months back at runtime.",
        "operationId": "elastigroupAzureSpotVmsGetElastigroupLogEntries",
        "tags": [
          "Elastigroup Azure Spot VMs"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/2"
          },
          {
            "in": "query",
            "name": "SEVERITY",
            "example": "WARN",
            "description": "Severity of log entries to extract.\n",
            "schema": {
              "type": "string",
              "enum": [
                "DEBUG",
                "WARN",
                "INFO",
                "ALL",
                "ERROR"
              ]
            }
          },
          {
            "in": "query",
            "name": "RESOURCE_ID",
            "example": "vm-12345678",
            "description": "Filter log extracted entries related to a specific resource id Default: Null\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "limit",
            "example": 500,
            "description": "Maximum number of lines to extract in a response. Max value allowed - 1000. Default is 500, if got null.\n",
            "schema": {
              "type": "integer",
              "maximum": 1000,
              "minimum": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Elastigroup Wrapper",
                                "properties": {
                                  "message": {
                                    "type": "string",
                                    "example": "Successfully detached [vm-b4ab9da435aa]"
                                  },
                                  "severity": {
                                    "type": "string",
                                    "example": "INFO"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2020-07-16T16:46:49.000Z"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:group:log"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode": {
      "post": {
        "summary": "Create Stateful Node",
        "description": "Create a new stateful node.",
        "operationId": "azureStatefulNodeCreate",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Create Azure Stateful Node",
                    "properties": {
                      "statefulNode": {
                        "type": "object",
                        "title": "Azure Stateful Node",
                        "required": [
                          "name",
                          "region",
                          "resourceGroupName",
                          "strategy",
                          "persistence",
                          "compute"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "ssn-12345678",
                            "readOnly": true,
                            "description": "Stateful Node unique identifier.\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "Spot Stateful Node",
                            "description": "Stateful Node Name.\n"
                          },
                          "region": {
                            "type": "string",
                            "example": "westus2",
                            "description": "The Azure region in which the Stateful Node will be launched.\n"
                          },
                          "resourceGroupName": {
                            "type": "string",
                            "example": "spotResourceGroup",
                            "description": "The Azure resource group in which the VM and all of the subsequent subresources will be launched.\n"
                          },
                          "description": {
                            "type": "string",
                            "example": "This is my example stateful node",
                            "description": "The description for the Stateful Node.\n"
                          },
                          "strategy": {
                            "type": "object",
                            "title": "Stateful Node Strategy",
                            "description": "The strategy to launch the underlying VM and Spot’s behavior for the Stateful Node.\n",
                            "required": [
                              "fallbackToOd"
                            ],
                            "properties": {
                              "preferredLifecycle": {
                                "type": "string",
                                "enum": [
                                  "od",
                                  "spot"
                                ],
                                "description": "The preferred life cycle to launch the VM.\n",
                                "example": "od",
                                "default": "spot"
                              },
                              "shouldUtilizeCommitments": {
                                "type": "boolean",
                                "description": "Determines whether to utilize any existing Azure Savings Plans or Reserved Instances associated with the subscription for On-Demand VMs.\n",
                                "example": true,
                                "default": false
                              },
                              "signals": {
                                "type": "array",
                                "description": "Signals that VMs are expected to send to the platform.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "type",
                                    "timeout"
                                  ],
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "The defined type of signal.\n",
                                      "enum": [
                                        "vmReady",
                                        "vmReadyToShutdown"
                                      ],
                                      "example": "vmReady"
                                    },
                                    "timeout": {
                                      "type": "integer",
                                      "description": "The timeout in seconds to hold the vm until a signal is sent.\n* If no signal is sent the vm will be replaced (vmReady) or we will terminate the VM (vmReadyToShutdown) after the timeout.\n",
                                      "default": 1800,
                                      "minimum": 1,
                                      "example": 180
                                    }
                                  }
                                }
                              },
                              "fallbackToOd": {
                                "type": "boolean",
                                "description": "In case of no spots available, Stateful Node will launch an On-demand instance instead.\n",
                                "example": true
                              },
                              "drainingTimeout": {
                                "type": "integer",
                                "description": "Time (in seconds) to allow the VM be drained from incoming TCP connections and detached from LB before terminating it.\n",
                                "default": 120,
                                "minimum": 1,
                                "example": 30
                              },
                              "revertToSpot": {
                                "description": "Hold settings for strategy correction - replacing On-Demand for Spot VMs\n",
                                "type": "object",
                                "required": [
                                  "performAt"
                                ],
                                "properties": {
                                  "performAt": {
                                    "type": "string",
                                    "enum": [
                                      "timeWindow",
                                      "never",
                                      "always"
                                    ],
                                    "description": "Defines the time in which to perform revert to spot.\ndefault: always\n",
                                    "example": "timeWindow"
                                  }
                                }
                              },
                              "optimizationWindows": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Defines the windows of which to revert to spot.\n* <a style=color:red>Requires the following format: \"ddd:hh:mm-ddd:hh:mm (day:hour(0-23):minute(0-59))\".</a>\n* <a style=color:red>Must be not empty if revertToSpot.performAt = timeWindow.</a>\n",
                                "example": [
                                  "Mon:03:00-Wed:02:30"
                                ]
                              },
                              "odWindows": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "* Define the time windows in which the underlying VM will be set as an on-demand lifecycle type.\n* During the entire time window, the rest of the strategy processes will be paused.\n* Switching between on-demand and Spot VM types at the enter/exit of the time window will trigger the recycling of the stateful node.\n* <a style=color:red>Requires the following format: \"ddd:hh:mm-ddd:hh:mm (day:hour(0-23):minute(0-59))\".</a>\n",
                                "example": [
                                  "Sun:23:00-Mon:02:30"
                                ]
                              },
                              "capacityReservation": {
                                "type": "object",
                                "description": "On-demand Capacity Reservation group enables you to reserve Compute capacity in an Azure region or an Availability Zone for any duration of time.\n[CRG can only be created on the Azure end.](https://learn.microsoft.com/en-us/azure/virtual-machines/capacity-reservation-create)\n",
                                "required": [
                                  "shouldUtilize",
                                  "utilizationStrategy"
                                ],
                                "properties": {
                                  "shouldUtilize": {
                                    "type": "boolean",
                                    "description": "Determines whether capacity reservations should be utilized.\n",
                                    "example": true
                                  },
                                  "utilizationStrategy": {
                                    "type": "string",
                                    "description": "The priority requested for using CRG. This value will determine if CRG is used ahead of spot VMs or On-demand VMs.\n* utilizeOverOD- If picked, we will use CRG only in case On demand should be launched.\n* utilizeOverSpot-  CRG will be preferred over Spot. Only after CRG is fully used, spot VMs can be used.\n",
                                    "enum": [
                                      "utilizeOverSpot",
                                      "utilizeOverOD"
                                    ],
                                    "example": "utilizeOverSpot"
                                  },
                                  "capacityReservationGroups": {
                                    "type": "array",
                                    "description": "List of the desired CRGs to use under the associated Azure subscription.\nWhen null we will utilize any available reservation that matches the Virtual Node Group.\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "resourceGroupName"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "The name of the CRG.\n",
                                          "example": "capacityReservationGroupName"
                                        },
                                        "resourceGroupName": {
                                          "type": "string",
                                          "description": "Azure resource group name\n",
                                          "example": "resourceGroupName"
                                        },
                                        "shouldPrioritize": {
                                          "type": "boolean",
                                          "description": "The desired CRG to utilize ahead of other CRGs in the subscription.\n",
                                          "example": true
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "availabilityVsCost": {
                                "title": "Elastigroup Availability VS Cost",
                                "description": "Set the desired preference for the Spot market VM selection. (100-  Availability, 0- cost)\n",
                                "type": "integer",
                                "example": 100
                              },
                              "interruptionToleration": {
                                "type": "object",
                                "description": "Interruption tolerance settings for the stateful node. When enabled, the stateful node tracks interruption frequency and \ntemporarily switches the node to On-Demand if too many interruptions occur within a defined evaluation window.\n",
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "description": "Enables interruption tolerance for the stateful node.\n",
                                    "example": true
                                  },
                                  "cooldown": {
                                    "type": "integer",
                                    "description": "The cooldown period in minutes after an interruption occurs before another interruption can be tolerated.\nMust be set if isEnabled is true.\n",
                                    "minimum": 120,
                                    "maximum": 10080,
                                    "example": 20
                                  },
                                  "evaluationPeriod": {
                                    "type": "integer",
                                    "description": "The period in minutes to evaluate the interruption tolerance. \nMust be set if isEnabled is true.\n",
                                    "minimum": 30,
                                    "maximum": 1440,
                                    "example": 60
                                  },
                                  "threshold": {
                                    "type": "integer",
                                    "description": "The maximum number of interruptions allowed within the evaluation period.\nMust be set if isEnabled is true.\n",
                                    "minimum": 3,
                                    "example": 3
                                  }
                                }
                              }
                            }
                          },
                          "compute": {
                            "type": "object",
                            "title": "Stateful Node Compute",
                            "description": "Defines the computational parameters to use when launch the VM for the Stateful Node.\n",
                            "required": [
                              "os",
                              "vmSizes",
                              "launchSpecification"
                            ],
                            "properties": {
                              "os": {
                                "type": "string",
                                "enum": [
                                  "Linux",
                                  "Windows"
                                ],
                                "description": "Defines the type of the operating system.\n",
                                "example": "Linux"
                              },
                              "vmSizes": {
                                "type": "object",
                                "description": "Defines the VM sizes to use when launching VMs.\n",
                                "required": [
                                  "odSizes"
                                ],
                                "properties": {
                                  "odSizes": {
                                    "type": "array",
                                    "description": "Defines the on-demand sizes to use when launching VMs.\n",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a1_v2"
                                    }
                                  },
                                  "spotSizes": {
                                    "type": "array",
                                    "description": "Defines the spot VM sizes to use when launching VMs.\n<a style=color:red>Required if spotSizeAttributes isn't specified.</a>\n",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a2_v2"
                                    }
                                  },
                                  "spotSizeAttributes": {
                                    "type": "object",
                                    "description": "The values and ranges for spot size attributes when launching VMs.\n <a style=color:red>Required if spotSizes isn't specified.</a>\n",
                                    "properties": {
                                      "minCpu": {
                                        "type": "integer",
                                        "example": 2,
                                        "description": "Minimum amount of vCPU units.\n"
                                      },
                                      "maxCpu": {
                                        "type": "integer",
                                        "example": 16,
                                        "description": "Maximum amount of vCPU units.\n"
                                      },
                                      "minStorage": {
                                        "type": "integer",
                                        "example": 50,
                                        "description": "Minimum amount of storage in GiB.\n"
                                      },
                                      "MaxStorage": {
                                        "type": "integer",
                                        "example": 1000,
                                        "description": "Maximum amount of storage in GiB.\n"
                                      },
                                      "minMemory": {
                                        "type": "integer",
                                        "example": 2,
                                        "description": "Minimum amount of memory in GiB.\n"
                                      },
                                      "maxMemory": {
                                        "type": "integer",
                                        "example": 48,
                                        "description": "Maximum amount of memory in GiB.\n"
                                      }
                                    }
                                  },
                                  "excludedVmSizes": {
                                    "type": "array",
                                    "description": "Exclude these spot VM sizes when using attribute-based VM sizes.\n",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a2_v2"
                                    }
                                  },
                                  "preferredSpotSizes": {
                                    "type": "array",
                                    "description": "Prioritize Spot VM sizes when launching Spot VMs.\n* <a style=color:red>If set, must be a sublist of compute.vmSizes.spotSizes. </a>\n",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a2_v2"
                                    }
                                  }
                                }
                              },
                              "zones": {
                                "type": "array",
                                "description": "List of Azure Availability Zones in the defined region.\n* If not defined, VMs will be launched regionally.\n",
                                "items": {
                                  "enum": [
                                    "1",
                                    "2",
                                    "3"
                                  ],
                                  "type": "string",
                                  "example": "1"
                                }
                              },
                              "preferredZone": {
                                "type": "string",
                                "description": "The AZ to prioritize when launching VMs.\n* If no markets are available in the Preferred AZ, VMs will be launched in the non-preferred AZs.\n* <a style=color:red>Must be one of the zones in compute.zones.</a>\n",
                                "enum": [
                                  "1",
                                  "2",
                                  "3"
                                ],
                                "example": "1"
                              },
                              "launchSpecification": {
                                "type": "object",
                                "description": "Defines the Virtual Node Group of the VM.",
                                "required": [
                                  "image",
                                  "network"
                                ],
                                "properties": {
                                  "image": {
                                    "type": "object",
                                    "description": "Defines the image with which the VM will be launched.\n* <a style=color:red>Must be only one initialized from the following (marketplace, custom, gallery).</a>\n* <a style=color:red>For import or update operations, image object cannot be defined when the compute.persistence.shouldPersistOsDisk = true.</a>\n* <a style=color:red>For import or update operations, image that contains data disk definitions cannot be defined when the compute.persistence.shouldPersistDataDisks = true.</a>\n",
                                    "properties": {
                                      "marketplace": {
                                        "type": "object",
                                        "description": "Select an image from Azure's Marketplace image catalogue.\n* <a style=color:red>Required if the custom image or gallery image are not specified.</a>\n",
                                        "required": [
                                          "publisher",
                                          "offer",
                                          "sku",
                                          "version"
                                        ],
                                        "properties": {
                                          "publisher": {
                                            "type": "string",
                                            "description": "Image publisher.\n",
                                            "example": "OpenLogic"
                                          },
                                          "offer": {
                                            "type": "string",
                                            "description": "Image offer.\n",
                                            "example": "CentOS"
                                          },
                                          "sku": {
                                            "type": "string",
                                            "description": "Image Stock Keeping Unit, which is the specific version of the image.\n",
                                            "example": "7.3"
                                          },
                                          "version": {
                                            "type": "string",
                                            "description": "Image's version. if version not provided we use \"latest\"\n",
                                            "default": "lastest",
                                            "example": "7.3-1611"
                                          }
                                        }
                                      },
                                      "custom": {
                                        "type": "object",
                                        "description": "Custom image definitions.\n* <a style=color:red>Required if marketplace image or gallery image are not specified.</a>\n",
                                        "required": [
                                          "resourceGroupName",
                                          "name"
                                        ],
                                        "properties": {
                                          "resourceGroupName": {
                                            "type": "string",
                                            "description": "The resource group name for custom image.\n",
                                            "example": "spotinst-azure"
                                          },
                                          "name": {
                                            "type": "string",
                                            "description": "The name of the custom image.\n",
                                            "example": "custom-image-name"
                                          }
                                        }
                                      },
                                      "gallery": {
                                        "title": "Gallery",
                                        "type": "object",
                                        "description": "Gallery image definitions.\n* <a style=color:red>Required if custom image or marketplace image are not specified.</a>\n",
                                        "required": [
                                          "resourceGroupName",
                                          "galleryName",
                                          "imageName",
                                          "versionName"
                                        ],
                                        "properties": {
                                          "resourceGroupName": {
                                            "title": "Resource Group Name",
                                            "description": "The resource group name for gallery image.\n",
                                            "type": "string",
                                            "example": "spotinst-azure"
                                          },
                                          "galleryName": {
                                            "title": "Gallery Name",
                                            "description": "Name of the gallery.\n",
                                            "type": "string",
                                            "example": "gallery-name"
                                          },
                                          "imageName": {
                                            "title": "Image Name",
                                            "description": "Name of the gallery image.\n",
                                            "type": "string",
                                            "example": "gallery-image-name"
                                          },
                                          "versionName": {
                                            "title": "Version",
                                            "description": "Image's version. Can be in the format x.x.x or 'latest'.\n",
                                            "type": "string",
                                            "example": "0.0.1"
                                          },
                                          "spotAccountId": {
                                            "title": "Spot Account ID",
                                            "description": "The Spot account ID that connected to the Azure subscription to which the gallery belongs. Relevant only in case of cross-subscription shared galleries. [Read more](https://docs.flexera.com/spot/elastigroup/features-azure/shared-image-galleries) about cross-subscription shared galleries in Elastigroup.",
                                            "type": "string",
                                            "example": "act-123456789"
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "purchasePlan": {
                                    "description": "Defines the Azure Marketplace purchase plan metadata for the selected image or osDisk image.\n",
                                    "allOf": [
                                      {
                                        "type": "object",
                                        "title": "Purchase Plan",
                                        "additionalProperties": false,
                                        "description": "Defines the Azure Marketplace purchase plan for the VM image.\n",
                                        "required": [
                                          "publisher",
                                          "product",
                                          "name"
                                        ],
                                        "properties": {
                                          "publisher": {
                                            "type": "string",
                                            "minLength": 1,
                                            "description": "Purchase plan publisher.\n",
                                            "example": "canonical"
                                          },
                                          "product": {
                                            "type": "string",
                                            "minLength": 1,
                                            "description": "Purchase plan product / offer.\n",
                                            "example": "0001-com-ubuntu-pro-jammy"
                                          },
                                          "name": {
                                            "type": "string",
                                            "minLength": 1,
                                            "description": "Purchase plan name / SKU.\n* This value is case-sensitive and must exactly match the Azure plan metadata.\n",
                                            "example": "pro-22_04-lts"
                                          }
                                        }
                                      }
                                    ]
                                  },
                                  "vmName": {
                                    "type": "string",
                                    "description": "* Set a VM name that will be persisted throughout the entire node lifecycle.\n* The name value should comply with the following limitations: \n  *  A maximal length of 64 characters.\n  * The name can’t contain spaces, control characters, or these characters: ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } | ; : . ' \" , < > / ?\n  *  A Windows VM name can't include a period or end with a hyphen.\n  * A Linux VM name can't end with a period or hyphen.\n",
                                    "example": "devVm1"
                                  },
                                  "vmNamePrefix": {
                                    "type": "string",
                                    "description": "* Set a VM name prefix to be used for all launched VMs and the VM resources.\n* The prefix value should comply with the following limitations: \n  *  A maximal length of 25 characters.\n  * The prefix can’t contain spaces, control characters, or these characters: ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } | ; : . ' \" , < > / ?\n  * The VM prefix can't end with a hyphen.\n",
                                    "example": "prefix"
                                  },
                                  "customData": {
                                    "type": "string",
                                    "format": "byte",
                                    "description": "Defines the custom data (YAML encoded at Base64) that will be executed upon VM launch.\n* <a style=color:red>The customData object cannot be defined when the compute.launchSpecification.image is defined as specialized.</a>\n* <a style=color:red>For import or update operations, customData object cannot be defined when the compute.persistence.shouldPersistOsDisk = true.</a>\n",
                                    "example": ""
                                  },
                                  "userData": {
                                    "type": "string",
                                    "description": "Define a set of scripts or other metadata that's inserted to an Azure virtual machine at provision time. (Base64 encoded)\n",
                                    "example": "IyEvYmluL2Jhc2gKZWNobyAidGVzdCI"
                                  },
                                  "shutdownScript": {
                                    "type": "string",
                                    "format": "byte",
                                    "writeOnly": true,
                                    "example": "IyEvdXNyL2Jpbi9lbnYgYmFzaAoiR29vZGJ5ZSBvbGQgaW5zdGFuY2Ui",
                                    "description": "Defines the shutdown script (encoded at Base64) to execute once the VM is detached.\n* <a style=color:red>For import or update operations, shutdownScript object cannot be defined when the compute.persistence.shouldPersistOsDisk = true.</a>\n"
                                  },
                                  "network": {
                                    "title": "Network",
                                    "description": "Defines the network profile with which the VM will be launched.\n* <a style=color:red>For import or update operations, network object cannot be defined when the compute.persistence.shouldPersistNetwork = true.</a>\n",
                                    "type": "object",
                                    "required": [
                                      "resourceGroupName",
                                      "virtualNetworkName",
                                      "networkInterfaces"
                                    ],
                                    "properties": {
                                      "resourceGroupName": {
                                        "title": "Resource Group Name",
                                        "description": "Defines the resource group name of the virtual network with which the VM will be launched.",
                                        "type": "string",
                                        "example": "subnetResourceGroup"
                                      },
                                      "virtualNetworkName": {
                                        "title": "Virtual Network Name",
                                        "description": "Defines the name of the virtual network with which the VM will be launched.",
                                        "type": "string",
                                        "example": "vname"
                                      },
                                      "networkInterfaces": {
                                        "title": "Network Interfaces",
                                        "description": "Defines the network interfaces with which the VM will be launched.",
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "required": [
                                            "isPrimary",
                                            "subnetName"
                                          ],
                                          "properties": {
                                            "isPrimary": {
                                              "title": "Is Primary Criteria",
                                              "description": "Defines whether the network interface is primary or not.\n* <a style=color:red>Must be true for only one of the items.</a>\n",
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "subnetName": {
                                              "title": "Subnet Name",
                                              "description": "Defines the subnet to which the network interface will be connected.",
                                              "type": "string",
                                              "example": "testSubnet"
                                            },
                                            "assignPublicIp": {
                                              "title": "Assign Public IP",
                                              "description": "Defines if a Public IP should be assigned in this network interface.",
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "publicIpSku": {
                                              "title": "Public Ip Sku",
                                              "description": "Defines the type of public IP to assign the VM.\n* <a style=color:red>Required if assignPublicIp=true.</a>\n",
                                              "type": "string",
                                              "enum": [
                                                "Standard",
                                                "Basic"
                                              ],
                                              "example": "Standard"
                                            },
                                            "networkSecurityGroup": {
                                              "title": "Network Security Group",
                                              "description": "Defines the network security group to which the network interface will be assigned.",
                                              "type": "object",
                                              "required": [
                                                "name",
                                                "resourceGroupName"
                                              ],
                                              "properties": {
                                                "name": {
                                                  "title": "Name",
                                                  "description": "Specify the name of the network security group to use in this network interface.",
                                                  "type": "string",
                                                  "example": "test"
                                                },
                                                "resourceGroupName": {
                                                  "title": "Resource Group Name",
                                                  "description": "Specify the resource group of the network security group.",
                                                  "type": "string",
                                                  "example": "test"
                                                }
                                              }
                                            },
                                            "enableIpForwarding": {
                                              "title": "Enable IP Forwarding",
                                              "description": "Enables IP forwarding on the network interface.",
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "privateIpAddresses": {
                                              "type": "array",
                                              "description": "Specify the private IP pool in which the VMs will be launched.\n* A list of unique IP addresses.\n* If none of the IP addresses available then a dynamic IP is used.\n",
                                              "items": {
                                                "type": "string",
                                                "example": [
                                                  "172.23.4.20"
                                                ]
                                              }
                                            },
                                            "additionalIpConfigurations": {
                                              "title": "Additional IP Configurations",
                                              "description": "Defines a list of extra IPs to be dynamically allocated.",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "required": [
                                                  "privateIpAddressVersion",
                                                  "name"
                                                ],
                                                "properties": {
                                                  "name": {
                                                    "title": "Name",
                                                    "description": "Specify the name of the additional Ip Configuration.\n* <a style=color:red>Must be unique across additionalIpConfigurations.</a>\n",
                                                    "type": "string",
                                                    "example": "test"
                                                  },
                                                  "privateIpAddressVersion": {
                                                    "title": "Private IP Address Version",
                                                    "description": "Defines the version of the private IP address.",
                                                    "type": "string",
                                                    "enum": [
                                                      "IPv4",
                                                      "IPv6"
                                                    ],
                                                    "default": "IPv4",
                                                    "example": "IPv4"
                                                  }
                                                }
                                              }
                                            },
                                            "publicIps": {
                                              "description": "Specify the public IP pool in which the VMs will be launched.\n* A list of unique IP addresses.\n* If none of the IP addresses available then a dynamic IP is used.\n",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "required": [
                                                  "resourceGroupName",
                                                  "name"
                                                ],
                                                "properties": {
                                                  "resourceGroupName": {
                                                    "description": "Specify the resource group of the public IP.",
                                                    "type": "string",
                                                    "example": "resourceGroup"
                                                  },
                                                  "name": {
                                                    "description": "Specify the name of the public IP to which the VMs will be assigned.",
                                                    "type": "string",
                                                    "example": "name"
                                                  }
                                                }
                                              }
                                            },
                                            "applicationSecurityGroups": {
                                              "description": "Defines the Application Security Groups that will be associated to the primary IP configration of the network interface.",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "required": [
                                                  "resourceGroupName",
                                                  "name"
                                                ],
                                                "properties": {
                                                  "resourceGroupName": {
                                                    "description": "Specify the resource group of the Application Security Group.",
                                                    "type": "string",
                                                    "example": "AsgResourceGroup"
                                                  },
                                                  "name": {
                                                    "description": "Specify the name of the Application Security Group.",
                                                    "type": "string",
                                                    "example": "AsgName"
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "login": {
                                    "type": "object",
                                    "description": "Specify the authentication details to be used for launching VMs.\n* <a style=color:red>For Linux: password/sshPublicKey is required.</a>\n* <a style=color:red>For Windows: password is required.</a>\n* <a style=color:red>The login object cannot be defined when the compute.launchSpecification.image is defined as specialized.</a>\n* <a style=color:red>For import or update operations, login object cannot be defined when the compute.persistence.shouldPersistOsDisk = true.</a>\n",
                                    "required": [
                                      "userName"
                                    ],
                                    "properties": {
                                      "userName": {
                                        "type": "string",
                                        "description": "Defines the admin user name for launching VMs.\n",
                                        "example": "spotinst"
                                      },
                                      "sshPublicKey": {
                                        "type": "string",
                                        "description": "Defines the SSH public key for admin access to Linux VMs.\n* Optional only for Linux.\n",
                                        "example": "ssh-rsa"
                                      },
                                      "password": {
                                        "type": "string",
                                        "writeOnly": true,
                                        "description": "Defines the password for admin access to Windows VMs.\n* <a style=color:red>Required for Windows.</a>\n"
                                      }
                                    }
                                  },
                                  "loadBalancersConfig": {
                                    "type": "object",
                                    "description": "Configure a Load Balancer.\n",
                                    "properties": {
                                      "loadBalancers": {
                                        "type": "array",
                                        "description": "Add a load balancer. For Azure Gateway, each Backend Pool is a separate load balancer.\n",
                                        "items": {
                                          "type": "object",
                                          "required": [
                                            "type",
                                            "resourceGroupName",
                                            "name",
                                            "backendPoolNames"
                                          ],
                                          "properties": {
                                            "type": {
                                              "type": "string",
                                              "description": "The type of load balancer.\n",
                                              "enum": [
                                                "loadBalancer",
                                                "applicationGateway"
                                              ],
                                              "example": "loadBalancer"
                                            },
                                            "resourceGroupName": {
                                              "type": "string",
                                              "description": "The Resource Group name of the Load Balancer.\n",
                                              "example": "testResourceGroup"
                                            },
                                            "name": {
                                              "type": "string",
                                              "description": "Name of the Application Gateway/Load Balancer\n",
                                              "example": "testLoadBalancer"
                                            },
                                            "loadBalancerSku": {
                                              "type": "string",
                                              "description": "* if type is LoadBalancer then possible values are:\n * “Standard\"\n * Basic”\n* if ApplicationGateway then possible values are:\n * “Standard_Large”\n * “Standard_Medium”\n * “Standard_Small”\n * “Standard_v2\n * “WAF_Large”\n * “WAF_Medium\"\n * “WAF_v2\"\n",
                                              "example": "Standard"
                                            },
                                            "backendPoolNames": {
                                              "type": "array",
                                              "items": {
                                                "type": "string"
                                              },
                                              "description": "Name of the Backend Pool to register the Stateful Node VMs to.\\\nEach Backend Pool is a separate load balancer.\\\nRequired if Type is APPLICATION_GATEWAY.\n",
                                              "example": [
                                                "testBackendPool1",
                                                "testBackendPool2"
                                              ]
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "tags": {
                                    "type": "array",
                                    "description": "Defines the tags (unique key-value pairs) to tag your resources.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "tagKey": {
                                          "type": "string",
                                          "description": "Tag key for all resources.\n* Maximum length of 512 characters.\n",
                                          "example": "env"
                                        },
                                        "tagValue": {
                                          "type": "string",
                                          "description": "Tag value for all resources.\n* Maximum length of 512 characters.\n",
                                          "example": "staging"
                                        }
                                      }
                                    },
                                    "maximum": 44
                                  },
                                  "managedServiceIdentities": {
                                    "type": "array",
                                    "description": "Defines a user-assigned managed identity to the launched VMs.\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "resourceGroupName"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "Defines the name of the managed service identities.\n",
                                          "example": "mySI2"
                                        },
                                        "resourceGroupName": {
                                          "type": "string",
                                          "description": "Defines the resource group of the managed service identities.\n",
                                          "example": "myResourceGroup"
                                        },
                                        "subscriptionId": {
                                          "type": "string",
                                          "description": "Defines the subscription ID of the managed service identities.\n\nRequired if the managed service identity is in a different subscription.\nTo use a user-assigned managed identity in a different subscription, you must | \nensure that the spotAccount's Service Principal has access to the defined subscription and that it |\nhas the two following permissions:\n1. Microsoft.ManagedIdentity/userAssignedIdentities/assign/action\n2. Microsoft.ManagedIdentity/userAssignedIdentities/read\n",
                                          "example": "12345678-abcd-1234-abcd-123456789ab"
                                        }
                                      }
                                    }
                                  },
                                  "extensions": {
                                    "type": "array",
                                    "description": "A list of objects for Azure extensions.\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "type",
                                        "publisher",
                                        "apiVersion",
                                        "minorVersionAutoUpgrade"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "Required on compute.launchSpecification.extensions object\n",
                                          "example": "extensionName"
                                        },
                                        "type": {
                                          "type": "string",
                                          "description": "Required on compute.launchSpecification.extensions object\n",
                                          "example": "customScript"
                                        },
                                        "publisher": {
                                          "type": "string",
                                          "description": "Required on compute.launchSpecification.extensions object\n",
                                          "example": "Microsoft.Azure.Extensions"
                                        },
                                        "apiVersion": {
                                          "type": "string",
                                          "description": "The API version of the extension. Required if extension specified.\n",
                                          "example": "2.0"
                                        },
                                        "minorVersionAutoUpgrade": {
                                          "type": "boolean",
                                          "description": "Required on compute.launchSpecification.extensions object\n",
                                          "example": true
                                        },
                                        "publicSettings": {
                                          "type": "object",
                                          "description": "Object for public settings\n"
                                        },
                                        "protectedSettings": {
                                          "type": "object",
                                          "description": "Object for protected settings\n"
                                        },
                                        "enableAutomaticUpgrade": {
                                          "title": "enable automatic upgrade",
                                          "description": "Indicates whether the extension should be automatically upgraded by the platform if there is a newer version of the extension available.\n",
                                          "type": "boolean",
                                          "example": false
                                        },
                                        "protectedSettingsFromKeyVault": {
                                          "title": "Protected Settings from key vault",
                                          "description": "The extensions protected settings that are passed by reference, and consumed from key vault.\n",
                                          "type": "object",
                                          "required": [
                                            "sourceVault",
                                            "secretUrl"
                                          ],
                                          "properties": {
                                            "sourceVault": {
                                              "title": "sourceVault",
                                              "type": "string",
                                              "description": "The relative URL of the Key Vault containing the secret.\n",
                                              "example": "/subscriptions/1234-1234-1234/resourceGroups/rg_test/providers/Microsoft.KeyVault/vaults/testKeyVault"
                                            },
                                            "secretUrl": {
                                              "title": "secretUrl",
                                              "type": "string",
                                              "description": "The URL referencing a secret in a Key Vault.\n",
                                              "example": "https://testKeyVault.vault.azure.net/secrets/SecretTest/123456"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "dataDisks": {
                                    "type": "array",
                                    "description": "The definitions of data disks that will be created and attached to the stateful node's VM.\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "sizeGB",
                                        "lun",
                                        "type"
                                      ],
                                      "properties": {
                                        "sizeGB": {
                                          "type": "integer",
                                          "description": "The size of the data disk in GB, required if dataDisks is specified.\n",
                                          "minimum": 1,
                                          "maximum": 1023,
                                          "example": 1
                                        },
                                        "lun": {
                                          "type": "integer",
                                          "description": "The LUN of the data disk.\n",
                                          "example": 1
                                        },
                                        "type": {
                                          "type": "string",
                                          "description": "The type of the data disk.\n",
                                          "enum": [
                                            "Standard_LRS",
                                            "Premium_LRS",
                                            "StandardSSD_LRS",
                                            "UltraSSD_LRS",
                                            "StandardSSD_ZRS",
                                            "Premium_ZRS",
                                            "PremiumV2_LRS"
                                          ],
                                          "example": "Standard_LRS"
                                        },
                                        "caching": {
                                          "type": "string",
                                          "description": "Specifies the host caching requirements. With disk caching enabled, VMs can achieve higher levels of performance.\n* If not specified, the Azure default behavior will be applied.\n",
                                          "enum": [
                                            "None",
                                            "ReadOnly",
                                            "ReadWrite"
                                          ],
                                          "example": "ReadOnly"
                                        }
                                      }
                                    },
                                    "minimum": 0,
                                    "maximum": 4
                                  },
                                  "osDisk": {
                                    "type": "object",
                                    "description": "Specify OS disk specification other than default.\n",
                                    "required": [
                                      "type"
                                    ],
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "description": "The type of the OS disk.\n",
                                        "enum": [
                                          "Standard_LRS",
                                          "Premium_LRS",
                                          "StandardSSD_LRS",
                                          "StandardSSD_ZRS",
                                          "Premium_ZRS"
                                        ],
                                        "example": "Standard_LRS"
                                      },
                                      "sizeGB": {
                                        "type": "integer",
                                        "description": "The size of the data disk in GB.\n",
                                        "minimum": 1,
                                        "maximum": 1023,
                                        "example": 30
                                      },
                                      "caching": {
                                        "type": "string",
                                        "description": "Specifies the host caching requirements. With disk caching enabled, VMs can achieve higher levels of performance.\n* If not specified, the Azure default behavior will be applied.\n",
                                        "enum": [
                                          "None",
                                          "ReadOnly",
                                          "ReadWrite"
                                        ],
                                        "example": "ReadOnly"
                                      }
                                    }
                                  },
                                  "secrets": {
                                    "title": "secrets",
                                    "type": "array",
                                    "description": "Set of certificates that should be installed on the VM\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "sourceVault",
                                        "vaultCertificates"
                                      ],
                                      "properties": {
                                        "sourceVault": {
                                          "type": "object",
                                          "description": "The key vault reference, contains the required certificates\n",
                                          "required": [
                                            "resourceGroupName",
                                            "name"
                                          ],
                                          "properties": {
                                            "resourceGroupName": {
                                              "type": "string",
                                              "description": "The resource group name of the key vault\n"
                                            },
                                            "name": {
                                              "type": "string",
                                              "description": "The name of the key vault\n"
                                            }
                                          }
                                        },
                                        "vaultCertificates": {
                                          "type": "array",
                                          "description": "The required certificate references\n",
                                          "items": {
                                            "type": "object",
                                            "required": [
                                              "certificateUrl",
                                              "certificateStore"
                                            ],
                                            "properties": {
                                              "certificateUrl": {
                                                "type": "string",
                                                "description": "The URL of the certificate under the key vault\n"
                                              },
                                              "certificateStore": {
                                                "type": "string",
                                                "description": "The certificate store directory the VM. The directory is created in the LocalMachine account.\n* This field is required only when using windows OS type\n* This field must be ‘null’ when the OS type is Linux\n"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "bootDiagnostics": {
                                    "required": [
                                      "isEnabled",
                                      "type"
                                    ],
                                    "type": "object",
                                    "description": "Will enable boot diagnostics in Azure when a new VM is launched",
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "description": "Allows you to enable and disable the configuration of boot diagnostics at launch",
                                        "example": true
                                      },
                                      "type": {
                                        "type": "string",
                                        "description": "Defines the storage type on VM launch  in Azure.",
                                        "enum": [
                                          "managed",
                                          "unmanaged"
                                        ],
                                        "example": "unmanaged"
                                      },
                                      "storageUri": {
                                        "type": "string",
                                        "description": "The storage URI that is used if a type is unmanaged.\n* The storage URI must follow the blob storage URI format (\\\"https://<blobstoragename>.blob.core.windows.net/\\\").\n* StorageUri is required if the type is unmanaged.\n* StorageUri must be ‘null’ in case the boot diagnostics type is managed.\n",
                                        "example": "https://example.blob.core.windows.net/"
                                      }
                                    }
                                  },
                                  "licenseType": {
                                    "type": "string",
                                    "description": "Specify an existing Azure license type to use when launching new VMs.\n* Valid values for Windows OS: \"Windows_Server\", \"Windows_Client\"\n* Valid values for Linux OS: \"RHEL_BYOS\", \"SLES_BYOS\"\n",
                                    "example": "Windows_Client"
                                  },
                                  "security": {
                                    "type": "object",
                                    "description": "Specifies the Security related profile settings for the virtual machine.\n",
                                    "properties": {
                                      "securityType": {
                                        "type": "string",
                                        "description": "Security type refers to the different security features of a virtual machine.\nSecurity features like Trusted launch virtual machines help to improve the security of Azure generation 2 virtual machines.\n",
                                        "enum": [
                                          "Standard",
                                          "TrustedLaunch",
                                          "ConfidentialVM"
                                        ],
                                        "example": "TrustedLaunch"
                                      },
                                      "secureBootEnabled": {
                                        "type": "boolean",
                                        "description": "Specifies whether secure boot should be enabled on the virtual machine.\n",
                                        "example": true
                                      },
                                      "vTpmEnabled": {
                                        "type": "boolean",
                                        "description": "Specifies whether vTPM should be enabled on the virtual machine.\n",
                                        "example": true
                                      },
                                      "encryptionAtHost": {
                                        "type": "boolean",
                                        "description": "Enables the Host Encryption for the virtual machine. The Encryption at host will be disabled unless this property is set to true for the resource.\n",
                                        "example": true
                                      },
                                      "confidentialOsDiskEncryption": {
                                        "type": "boolean",
                                        "description": "Confidential disk encryption binds the disk encryption keys to the VM's TPM, ensuring VM-only access.\nThe security type must be \"ConfidentialVM\" to enable defining this preference as “true”.\n",
                                        "example": false
                                      }
                                    }
                                  },
                                  "proximityPlacementGroups": {
                                    "type": "array",
                                    "description": "The proximity placement group where the VM is launched.",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "resourceGroupName"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "The name of the proximity placement group.",
                                          "example": "testPPG"
                                        },
                                        "resourceGroupName": {
                                          "type": "string",
                                          "description": "The resource group name of the proximity placement group.",
                                          "example": "testResourceGroup"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "persistence": {
                            "type": "object",
                            "title": "Stateful Node Persistence",
                            "description": "Defines the persistence of the Stateful Node.\n",
                            "required": [
                              "shouldPersistOsDisk",
                              "shouldPersistDataDisks",
                              "shouldPersistNetwork"
                            ],
                            "properties": {
                              "shouldPersistOsDisk": {
                                "type": "boolean",
                                "description": "Enables the OS disk persistency.\n",
                                "example": true
                              },
                              "osDiskPersistenceMode": {
                                "type": "string",
                                "enum": [
                                  "reattach",
                                  "onLaunch"
                                ],
                                "description": "Defines The way persistency is handled in case of os disk persistence.\n",
                                "example": "onLaunch"
                              },
                              "shouldPersistDataDisks": {
                                "type": "boolean",
                                "description": "Enables the data disk persistency.\n",
                                "example": true
                              },
                              "dataDisksPersistenceMode": {
                                "type": "string",
                                "enum": [
                                  "reattach",
                                  "onLaunch"
                                ],
                                "description": "Defines the way persistency is handled in case of data disks persistence.\n",
                                "example": "reattach"
                              },
                              "shouldPersistNetwork": {
                                "type": "boolean",
                                "description": "Enables the network persistency.\n",
                                "example": true
                              }
                            }
                          },
                          "scheduling": {
                            "type": "object",
                            "title": "Stateful Node Scheduling",
                            "description": "Scheduling settings for stateful node.\n",
                            "properties": {
                              "tasks": {
                                "type": "array",
                                "description": "List of scheduled tasks to excute for the stateful node's.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "isEnabled",
                                    "type",
                                    "cronExpression"
                                  ],
                                  "properties": {
                                    "isEnabled": {
                                      "type": "boolean",
                                      "description": "Is scheduled task enabled for stateful node.\n",
                                      "example": true
                                    },
                                    "type": {
                                      "type": "string",
                                      "description": "The type of the scheduled task\n",
                                      "enum": [
                                        "pause",
                                        "resume",
                                        "recycle"
                                      ],
                                      "example": "recycle"
                                    },
                                    "cronExpression": {
                                      "type": "string",
                                      "description": "A expression which describes when to execute the scheduled task (UTC)\n",
                                      "example": "35 12 * * *"
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "health": {
                            "type": "object",
                            "title": "Stateful Node Health",
                            "description": "Set health check and auto-healing of unhealthy VMs.\n",
                            "properties": {
                              "healthCheckTypes": {
                                "type": "array",
                                "description": "Health check types to use in order to validate VM health.\n",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "vmState",
                                    "applicationGateway"
                                  ]
                                },
                                "example": [
                                  "vmState"
                                ]
                              },
                              "gracePeriod": {
                                "type": "integer",
                                "description": "The amount of time (in seconds) after a new VM has launched before terminating the old VM.\n",
                                "example": 120,
                                "minimum": 0
                              },
                              "autoHealing": {
                                "type": "boolean",
                                "example": true,
                                "description": "Enable auto-healing of unhealthy VMs.\n"
                              },
                              "unhealthyDuration": {
                                "type": "integer",
                                "description": "Amount of time (in seconds) for the VM to remain unhealthy before a replacement is triggered.\n",
                                "example": 360,
                                "minimum": 120
                              }
                            }
                          },
                          "integrations": {
                            "type": "object",
                            "title": "Stateful Node Integrations",
                            "description": "Configure integrations for the VMs in the stateful node.\n",
                            "properties": {
                              "insights": {
                                "type": "object",
                                "description": "Configure integrations for the stateful node VM.\n",
                                "required": [
                                  "isEnabled",
                                  "dataCollectionRuleId"
                                ],
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "description": "Enable insights for the stateful node.\n"
                                  },
                                  "dataCollectionRuleId": {
                                    "type": "string",
                                    "description": "The ID of the data collection rule to be associated with the Stateful Node.",
                                    "example": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Insights/dataCollectionRules/myDataCollectionRule"
                                  }
                                }
                              }
                            }
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2022-01-01T00:00:00.000+0000"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2022-01-01T00:00:00.000+0000"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create Stateful Node Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/ssn-12345678"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1statefulNode/post/requestBody/content/application~1json/schema/allOf/0/properties/statefulNode"
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:statefulNode"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get All Stateful Nodes",
        "description": "Get the configurations of all stateful nodes in a specific account.",
        "operationId": "azureStatefulNodeGetAll",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "name",
            "example": "MyStatefulGroup",
            "description": "Filters to find the stateful node via a specific name.\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "region",
            "example": "eastus",
            "description": "Filters to find all the stateful nodes in a specific region.\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "List Stateful Node Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1statefulNode/post/requestBody/content/application~1json/schema/allOf/0/properties/statefulNode"
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:statefulNode"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/{nodeId}": {
      "get": {
        "summary": "Get Stateful Node",
        "description": "Get the configuration of an existing stateful node.\n",
        "operationId": "azureStatefulNodeGet",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "nodeId",
            "example": "ssn-12345678",
            "description": "The ID of the stateful node.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Get Stateful Node Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/ssn-12345678"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1statefulNode/post/requestBody/content/application~1json/schema/allOf/0/properties/statefulNode"
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:statefulNode"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Stateful Node",
        "description": "Update an existing stateful node.\n",
        "operationId": "azureStatefulNodeUpdate",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1compute~1statefulNode~1%7BnodeId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Update Azure Stateful Node",
                    "properties": {
                      "statefulNode": {
                        "type": "object",
                        "title": "Azure Stateful Node",
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "ssn-12345678",
                            "readOnly": true,
                            "description": "Azure Stateful Node ID\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "Spot Stateful Node",
                            "description": "Azure Stateful Node Name\n"
                          },
                          "region": {
                            "type": "string",
                            "example": "westus2",
                            "readOnly": true,
                            "description": "The Azure region your Stateful Node will be created in.\n"
                          },
                          "resourceGroupName": {
                            "type": "string",
                            "example": "spotResourceGroup",
                            "readOnly": true,
                            "description": "Name of the Resource Group for Stateful Node.\n"
                          },
                          "description": {
                            "type": "string",
                            "example": "This is my example stateful node",
                            "description": "Describe your Azure Stateful Node\n"
                          },
                          "strategy": {
                            "type": "object",
                            "title": "Stateful Node Strategy",
                            "description": "Strategy for Stateful Node.\n",
                            "required": [
                              "fallbackToOd"
                            ],
                            "properties": {
                              "preferredLifecycle": {
                                "type": "string",
                                "enum": [
                                  "od",
                                  "spot"
                                ],
                                "description": "The desired type of VM.\n",
                                "example": "od",
                                "default": "spot"
                              },
                              "shouldUtilizeCommitments": {
                                "type": "boolean",
                                "description": "Determines whether to utilize any existing Azure Savings Plans or Reserved Instances associated with the subscription for On-Demand VMs.\n",
                                "example": true,
                                "default": false
                              },
                              "signals": {
                                "type": "array",
                                "description": "The signals defined for the stateful node.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "type",
                                    "timeout"
                                  ],
                                  "properties": {
                                    "type": {
                                      "type": "string",
                                      "description": "The type of the signal defined for the stateful node.\n",
                                      "enum": [
                                        "vmReady",
                                        "vmReadyToShutdown"
                                      ],
                                      "example": "vmReady"
                                    },
                                    "timeout": {
                                      "type": "integer",
                                      "description": "The timeout in seconds to hold the vm until a signal is sent.\\\nIf no signal is sent the vm will be replaced (vmReady) or we will terminate the vm (vmReadyToShutdown) after the timeout.\n",
                                      "default": 1800,
                                      "minimum": 1,
                                      "example": 180
                                    }
                                  }
                                }
                              },
                              "fallbackToOd": {
                                "type": "boolean",
                                "description": "In case of no spots available, Stateful Node will launch an On-demand instance instead\n",
                                "example": true
                              },
                              "drainingTimeout": {
                                "type": "integer",
                                "description": "Time (in seconds) to allow the VM be drained from incoming TCP connections and detached from MLB before terminating it during a scale down operation.\n",
                                "default": 120,
                                "minimum": 1,
                                "example": 30
                              },
                              "revertToSpot": {
                                "description": "Hold settings for strategy correction - replacing On-Demand for Spot VMs\n",
                                "type": "object",
                                "required": [
                                  "performAt"
                                ],
                                "properties": {
                                  "performAt": {
                                    "type": "string",
                                    "enum": [
                                      "timeWindow",
                                      "never",
                                      "always"
                                    ],
                                    "description": "Settings for maintenance strategy.\ndefault: \"always\"\n",
                                    "example": "timeWindow"
                                  }
                                }
                              },
                              "optimizationWindows": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Defines the windows of which to revert to spot.\n* <a style=color:red>Requires the following format: \"ddd:hh:mm-ddd:hh:mm (day:hour(0-23):minute(0-59))\".</a>\n* <a style=color:red>Must be not empty if revertToSpot.performAt = timeWindow.</a>\n",
                                "example": [
                                  "Mon:03:00-Wed:02:30"
                                ]
                              },
                              "odWindows": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "* Define the time windows in which the underlying VM will be set as an on-demand lifecycle type.\n* During the entire time window, the rest of the strategy process will be paused.\n* Switching between on-demand and Spot VM types at the enter/exit of the time window will trigger the recycling of the stateful node.\n* <a style=color:red>Requires the following format: \"ddd:hh:mm-ddd:hh:mm (day:hour(0-23):minute(0-59))\".</a>\n",
                                "example": [
                                  "Sun:23:00-Mon:02:30"
                                ]
                              },
                              "capacityReservation": {
                                "type": "object",
                                "description": "On-demand Capacity Reservation group enables you to reserve Compute capacity in an Azure region or an Availability Zone for any duration of time.\n[CRG can only be created on the Azure end.](https://learn.microsoft.com/en-us/azure/virtual-machines/capacity-reservation-create)\n",
                                "required": [
                                  "shouldUtilize",
                                  "utilizationStrategy"
                                ],
                                "properties": {
                                  "shouldUtilize": {
                                    "type": "boolean",
                                    "description": "Determines whether capacity reservations should be utilized.\n",
                                    "example": true
                                  },
                                  "utilizationStrategy": {
                                    "type": "string",
                                    "description": "The priority requested for using CRG. This value will determine if CRG is used ahead of spot VMs or On-demand VMs.\n* utilizeOverOD- If picked, we will use CRG only in case On-demand should be launched.\n* utilizeOverSpot-  CRG will be preferred over Spot. Only after CRG is fully used, spot VMs can be used.\n",
                                    "enum": [
                                      "utilizeOverSpot",
                                      "utilizeOverOD"
                                    ],
                                    "example": "utilizeOverSpot"
                                  },
                                  "capacityReservationGroups": {
                                    "type": "array",
                                    "description": "List of the desired CRGs to use under the associated Azure subscription.\nWhen null we will utilize any available reservation that matches the Virtual Node Group.\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "resourceGroupName"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "The name of the CRG.\n",
                                          "example": "capacityReservationGroupName"
                                        },
                                        "resourceGroupName": {
                                          "type": "string",
                                          "description": "Azure resource group name\n",
                                          "example": "resourceGroupName"
                                        },
                                        "shouldPrioritize": {
                                          "type": "boolean",
                                          "description": "The desired CRG to utilize ahead of other CRGs in the subscription.\n",
                                          "example": true
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "availabilityVsCost": {
                                "title": "Elastigroup Availability VS Cost",
                                "description": "Set the desired preference for the Spot market VM selection. (100-  Availability, 0- cost)\n",
                                "type": "integer",
                                "example": 100
                              },
                              "interruptionToleration": {
                                "type": "object",
                                "description": "Interruption tolerance settings for the stateful node.\n",
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "description": "Interruption tolerance settings for the stateful node. When enabled, the stateful node tracks interruption frequency and\ntemporarily switches the node to On-Demand if too many interruptions occur within a defined evaluation window.\n",
                                    "example": true
                                  },
                                  "cooldown": {
                                    "type": "integer",
                                    "description": "The cooldown period in minutes after an interruption occurs before another interruption can be tolerated.\n",
                                    "minimum": 120,
                                    "maximum": 10080,
                                    "example": 20
                                  },
                                  "evaluationPeriod": {
                                    "type": "integer",
                                    "description": "The period in minutes to evaluate the interruption tolerance.\n",
                                    "minimum": 30,
                                    "maximum": 1440,
                                    "example": 60
                                  },
                                  "threshold": {
                                    "type": "integer",
                                    "description": "The maximum number of interruptions allowed within the evaluation period.\n",
                                    "minimum": 3,
                                    "example": 3
                                  }
                                }
                              }
                            }
                          },
                          "compute": {
                            "type": "object",
                            "title": "Stateful Node Compute",
                            "description": "Compute settings for Stateful Node\n",
                            "required": [
                              "os",
                              "vmSizes",
                              "launchSpecification"
                            ],
                            "properties": {
                              "os": {
                                "type": "string",
                                "enum": [
                                  "Linux",
                                  "Windows"
                                ],
                                "description": "Type of operating system.\n",
                                "example": "Linux"
                              },
                              "vmSizes": {
                                "type": "object",
                                "description": "Amount of time to be unhealthy before a replacement is triggered\n",
                                "required": [
                                  "odSizes"
                                ],
                                "properties": {
                                  "odSizes": {
                                    "type": "array",
                                    "description": "Available On-Demand sizes.\n",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a1_v2"
                                    }
                                  },
                                  "spotSizes": {
                                    "type": "array",
                                    "description": "Available Spot-VM sizes.\n<a style=color:red>Required if spotSizeAttributes isn't specified.</a>\n",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a2_v2"
                                    }
                                  },
                                  "spotSizeAttributes": {
                                    "type": "object",
                                    "description": "The values and ranges for spot size attributes when launching VMs.\n <a style=color:red>Required if spotSizes isn't specified.</a>\n",
                                    "properties": {
                                      "minCpu": {
                                        "type": "integer",
                                        "example": 2,
                                        "description": "Minimum amount of vCPU units.\n"
                                      },
                                      "maxCpu": {
                                        "type": "integer",
                                        "example": 16,
                                        "description": "Maximum amount of vCPU units.\n"
                                      },
                                      "minStorage": {
                                        "type": "integer",
                                        "example": 50,
                                        "description": "Minimum amount of storage in GiB.\n"
                                      },
                                      "MaxStorage": {
                                        "type": "integer",
                                        "example": 1000,
                                        "description": "Maximum amount of storage in GiB.\n"
                                      },
                                      "minMemory": {
                                        "type": "integer",
                                        "example": 2,
                                        "description": "Minimum amount of memory in GiB.\n"
                                      },
                                      "maxMemory": {
                                        "type": "integer",
                                        "example": 48,
                                        "description": "Maximum amount of memory in GiB.\n"
                                      }
                                    }
                                  },
                                  "excludedVmSizes": {
                                    "type": "array",
                                    "description": "Exclude these spot VM sizes when using attribute-based VM sizes.\n",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a2_v2"
                                    }
                                  },
                                  "preferredSpotSizes": {
                                    "type": "array",
                                    "description": "Prioritize Spot VM sizes when launching Spot VMs for the group.\n<a style=color:red>If set, must be a sublist of compute.vmSizes.spotSizes. </a>\n",
                                    "items": {
                                      "type": "string",
                                      "example": "standard_a2_v2"
                                    }
                                  }
                                }
                              },
                              "zones": {
                                "type": "array",
                                "description": "List of Azure Availability Zones in the defined region; If not defined, Virtual machines will be launched regionally.",
                                "items": {
                                  "enum": [
                                    "1",
                                    "2",
                                    "3"
                                  ],
                                  "type": "string",
                                  "example": "1"
                                }
                              },
                              "preferredZone": {
                                "type": "string",
                                "description": "The AZ to prioritize when launching VMs.\n* If no markets are available in the Preferred AZ, VMs will be launched in the non-preferred AZs.\n* <a style=color:red>Must be one of the zones in compute.zones.</a>\n",
                                "enum": [
                                  "1",
                                  "2",
                                  "3"
                                ],
                                "example": "1"
                              },
                              "launchSpecification": {
                                "type": "object",
                                "required": [
                                  "image",
                                  "network"
                                ],
                                "properties": {
                                  "image": {
                                    "type": "object",
                                    "description": "Image of VM. An image is a template for creating new VMs.\n",
                                    "properties": {
                                      "marketplace": {
                                        "type": "object",
                                        "description": "Select an image from Azure's Marketplace image catalogue\\\nRequired if custom image or gallery image are not specified.\n",
                                        "required": [
                                          "publisher",
                                          "offer",
                                          "sku",
                                          "version"
                                        ],
                                        "properties": {
                                          "publisher": {
                                            "type": "string",
                                            "description": "Image publisher.\n",
                                            "example": "OpenLogic"
                                          },
                                          "offer": {
                                            "type": "string",
                                            "description": "Name of image to use.\n",
                                            "example": "CentOS"
                                          },
                                          "sku": {
                                            "type": "string",
                                            "description": "Image's Stock Keeping Unit, which is the specific version of the image.\n",
                                            "example": "7.3"
                                          },
                                          "version": {
                                            "type": "string",
                                            "description": "Image's version. if version not provided we use \"latest\"\n",
                                            "default": "lastest",
                                            "example": "7.3-1611"
                                          }
                                        }
                                      },
                                      "custom": {
                                        "type": "object",
                                        "description": "Custom image to launch Stateful Node with.\n",
                                        "required": [
                                          "resourceGroupName",
                                          "name"
                                        ],
                                        "properties": {
                                          "resourceGroupName": {
                                            "type": "string",
                                            "description": "Name of Resource Group for custom image.\n",
                                            "example": "spotinst-azure"
                                          },
                                          "name": {
                                            "type": "string",
                                            "description": "Name of the custom image.\n",
                                            "example": "custom-image-name"
                                          }
                                        }
                                      },
                                      "gallery": {
                                        "title": "Gallery",
                                        "type": "object",
                                        "description": "Gallery image to launch Stateful Node with. Required if custom image or marketplace image are not specified.\n",
                                        "required": [
                                          "resourceGroupName",
                                          "galleryName",
                                          "imageName",
                                          "versionName"
                                        ],
                                        "properties": {
                                          "resourceGroupName": {
                                            "title": "Resource Group Name",
                                            "description": "Name of Resource Group for custom image\n",
                                            "type": "string",
                                            "example": "spotinst-azure"
                                          },
                                          "galleryName": {
                                            "title": "Gallery Name",
                                            "description": "Name of the gallery.\n",
                                            "type": "string",
                                            "example": "gallery-name"
                                          },
                                          "imageName": {
                                            "title": "Image Name",
                                            "description": "Name of the gallery image.\n",
                                            "type": "string",
                                            "example": "gallery-image-name"
                                          },
                                          "versionName": {
                                            "title": "Version",
                                            "description": "Image's version. Can be in the format x.x.x or 'latest'.\n",
                                            "type": "string",
                                            "example": "0.0.1"
                                          },
                                          "spotAccountId": {
                                            "title": "Spot Account ID",
                                            "description": "The Spot account ID that connected to the Azure subscription to which the gallery belongs. Relevant only in case of cross-subscription shared galleries. [Read more](https://docs.flexera.com/spot/elastigroup/features-azure/shared-image-galleries) about cross-subscription shared galleries in Elastigroup.",
                                            "type": "string",
                                            "example": "act-123456789"
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "purchasePlan": {
                                    "description": "Defines the Azure Marketplace purchase plan metadata for the selected image or osDisk image.\n",
                                    "allOf": [
                                      {
                                        "type": "object",
                                        "title": "Purchase Plan",
                                        "additionalProperties": false,
                                        "description": "Defines the Azure Marketplace purchase plan for the VM image.\n* On update, each provided field must contain a non-empty value.\n",
                                        "properties": {
                                          "publisher": {
                                            "type": "string",
                                            "minLength": 1,
                                            "description": "Purchase plan publisher.\n",
                                            "example": "canonical"
                                          },
                                          "product": {
                                            "type": "string",
                                            "minLength": 1,
                                            "description": "Purchase plan product / offer.\n",
                                            "example": "0001-com-ubuntu-pro-jammy"
                                          },
                                          "name": {
                                            "type": "string",
                                            "minLength": 1,
                                            "description": "Purchase plan name / SKU.\n* This value is case-sensitive and must exactly match the Azure plan metadata.\n",
                                            "example": "pro-22_04-lts"
                                          }
                                        }
                                      }
                                    ]
                                  },
                                  "vmName": {
                                    "type": "string",
                                    "description": "* Set a VM name that will be persisted throughout the entire node lifecycle.\n* The name value should comply with the following limitations: \n  *  A maximal length of 64 characters.\n  * The name can’t contain spaces, control characters, or these characters: ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } | ; : . ' \" , < > / ?\n  *  A Windows VM name can't include a period or end with a hyphen.\n  * A Linux VM name can't end with a period or hyphen.\n",
                                    "example": "devVm1"
                                  },
                                  "vmNamePrefix": {
                                    "type": "string",
                                    "description": "* Set a VM name prefix to be used for all launched VMs and the VM resources.\n* The prefix value should comply with the following limitations: \n  *  A maximal length of 25 characters.\n  * The prefix can’t contain spaces, control characters, or these characters: ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } | ; : . ' \" , < > / ?\n  * The VM prefix can't end with a hyphen.\n",
                                    "example": "prefix"
                                  },
                                  "customData": {
                                    "type": "string",
                                    "format": "byte",
                                    "description": "This value will hold the YML in base64 and will be added to the virtual machine.\n",
                                    "example": ""
                                  },
                                  "userData": {
                                    "type": "string",
                                    "description": "Define a set of scripts or other metadata that's inserted to an Azure virtual machine at provision time. (Base64 encoded)\n",
                                    "example": "IyEvYmluL2Jhc2gKZWNobyAidGVzdCI"
                                  },
                                  "shutdownScript": {
                                    "type": "string",
                                    "format": "byte",
                                    "writeOnly": true,
                                    "example": "IyEvdXNyL2Jpbi9lbnYgYmFzaAoiR29vZGJ5ZSBvbGQgaW5zdGFuY2Ui",
                                    "description": "Shutdown script for the stateful node. Value should be passed as a string encoded at Base64 only\n"
                                  },
                                  "network": {
                                    "title": "Network",
                                    "description": "Define the Virtual Network and Subnet for your Stateful Node.",
                                    "type": "object",
                                    "required": [
                                      "resourceGroupName",
                                      "virtualNetworkName",
                                      "networkInterfaces"
                                    ],
                                    "properties": {
                                      "resourceGroupName": {
                                        "title": "Resource Group Name",
                                        "description": "Vnet Resource Group Name",
                                        "type": "string",
                                        "example": "subnetResourceGroup"
                                      },
                                      "virtualNetworkName": {
                                        "title": "Virtual Network Name",
                                        "description": "Virtual Network",
                                        "type": "string",
                                        "example": "vname"
                                      },
                                      "networkInterfaces": {
                                        "title": "Network Interfaces",
                                        "description": "Network Interfaces",
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "required": [
                                            "isPrimary",
                                            "subnetName"
                                          ],
                                          "properties": {
                                            "isPrimary": {
                                              "title": "Is Primary Criteria",
                                              "description": "Defines whether the network interface is primary or not.",
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "subnetName": {
                                              "title": "Subnet Name",
                                              "description": "Subnet name",
                                              "type": "string",
                                              "example": "testSubnet"
                                            },
                                            "assignPublicIp": {
                                              "title": "Assign Public IP",
                                              "description": "Assign public IP",
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "publicIpSku": {
                                              "title": "Public Ip Sku",
                                              "description": "Required if assignPublicIp=true values=[STANDARD/BASIC]",
                                              "type": "string",
                                              "example": "STANDARD"
                                            },
                                            "networkSecurityGroup": {
                                              "title": "Network Security Group",
                                              "description": "Network Security Group",
                                              "type": "object",
                                              "properties": {
                                                "name": {
                                                  "title": "Name",
                                                  "description": "Requires valid security group name. Required if security group is specified.",
                                                  "type": "string",
                                                  "example": "test"
                                                },
                                                "resourceGroupName": {
                                                  "title": "Resource Group Name",
                                                  "description": "Requires valid resource group name. Required if security group is specified.",
                                                  "type": "string",
                                                  "example": "test"
                                                }
                                              }
                                            },
                                            "enableIpForwarding": {
                                              "title": "Enable IP Forwarding",
                                              "description": "Enable IP Forwarding",
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "privateIpAddresses": {
                                              "type": "array",
                                              "description": "A list with unique items that every item is a valid IP",
                                              "items": {
                                                "type": "string",
                                                "example": [
                                                  "172.23.4.20"
                                                ]
                                              }
                                            },
                                            "additionalIpConfigurations": {
                                              "title": "Additional IP Configurations",
                                              "description": "Additional configuration of network interface",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "required": [
                                                  "privateIpAddressVersion",
                                                  "name"
                                                ],
                                                "properties": {
                                                  "name": {
                                                    "title": "Name",
                                                    "description": "Required if additionalConfiguration has been specified.",
                                                    "type": "string",
                                                    "example": "test"
                                                  },
                                                  "privateIpAddressVersion": {
                                                    "title": "Private IP Address Version",
                                                    "description": "Version of the private IP address",
                                                    "type": "string",
                                                    "enum": [
                                                      "IPv4",
                                                      "IPv6"
                                                    ],
                                                    "default": "IPv4",
                                                    "example": "IPv4"
                                                  }
                                                }
                                              }
                                            },
                                            "publicIps": {
                                              "description": "Defined a pool of Public Ips (from Azure), that will be associated to the network interface. We will associate one public ip per instance until the pool is exhausted, in which case, we will create a new one.",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "required": [
                                                  "resourceGroupName",
                                                  "name"
                                                ],
                                                "properties": {
                                                  "resourceGroupName": {
                                                    "description": "The resource group of the public ip.",
                                                    "type": "string",
                                                    "example": "resourceGroup"
                                                  },
                                                  "name": {
                                                    "description": "The name of the public ip.",
                                                    "type": "string",
                                                    "example": "name"
                                                  }
                                                }
                                              }
                                            },
                                            "applicationSecurityGroups": {
                                              "description": "List of Application Security Groups that will be associated to the primary ip configration of the network interface.",
                                              "type": "array",
                                              "items": {
                                                "type": "object",
                                                "required": [
                                                  "resourceGroupName",
                                                  "name"
                                                ],
                                                "properties": {
                                                  "resourceGroupName": {
                                                    "description": "The resource group of the Application Security Group.",
                                                    "type": "string",
                                                    "example": "AsgResourceGroup"
                                                  },
                                                  "name": {
                                                    "description": "The name of the Application Security group",
                                                    "type": "string",
                                                    "example": "AsgName"
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "login": {
                                    "type": "object",
                                    "description": "Set admin access for accessing your VMs. Password/SSH is required for Linux.\n",
                                    "required": [
                                      "userName"
                                    ],
                                    "properties": {
                                      "userName": {
                                        "type": "string",
                                        "description": "user name for admin access to VMs.\\\nLogin can be set:\n* for windows: compute.launchSpecification.login.password\n* for linux: compute.launchSpecification.login.sshPublicKey\n\nJust user name, without pwd or SSH key\n",
                                        "example": "spotinst"
                                      },
                                      "sshPublicKey": {
                                        "type": "string",
                                        "description": "SSH for admin access to Linux VMs.\\\nOptional for Linux.\n",
                                        "example": "ssh-rsa"
                                      },
                                      "password": {
                                        "type": "string",
                                        "writeOnly": true,
                                        "description": "Password for admin access to Windows VMs.\\\nRequired for Windows.\n"
                                      }
                                    }
                                  },
                                  "loadBalancersConfig": {
                                    "type": "object",
                                    "description": "Configure a Load Balancer.\n",
                                    "properties": {
                                      "loadBalancers": {
                                        "type": "array",
                                        "description": "Add a load balancer. For Azure Gateway, each Backend Pool is a separate load balancer.\n",
                                        "items": {
                                          "type": "object",
                                          "required": [
                                            "type",
                                            "resourceGroupName",
                                            "name",
                                            "backendPoolNames"
                                          ],
                                          "properties": {
                                            "type": {
                                              "type": "string",
                                              "description": "The type of load balancer.\n",
                                              "enum": [
                                                "loadBalancer",
                                                "applicationGateway"
                                              ],
                                              "example": "loadBalancer"
                                            },
                                            "resourceGroupName": {
                                              "type": "string",
                                              "description": "The Resource Group name of the Load Balancer.\n",
                                              "example": "testResourceGroup"
                                            },
                                            "name": {
                                              "type": "string",
                                              "description": "Name of the Application Gateway/Load Balancer\n",
                                              "example": "testLoadBalancer"
                                            },
                                            "loadBalancerSku": {
                                              "type": "string",
                                              "description": "* if type is LoadBalancer then possible values are:\n * “Standard\"\n * Basic”\n* if ApplicationGateway then possible values are:\n * “Standard_Large”\n * “Standard_Medium”\n * “Standard_Small”\n * “Standard_v2\n * “WAF_Large”\n * “WAF_Medium\"\n * “WAF_v2\"\n",
                                              "example": "Standard"
                                            },
                                            "backendPoolNames": {
                                              "type": "array",
                                              "items": {
                                                "type": "string"
                                              },
                                              "description": "Name of the Backend Pool to register the Stateful Node VMs to.\\\nEach Backend Pool is a separate load balancer.\\\nRequired if Type is APPLICATION_GATEWAY.\n",
                                              "example": [
                                                "testBackendPool1",
                                                "testBackendPool2"
                                              ]
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "tags": {
                                    "type": "array",
                                    "description": "Unique Key-Value pairs for all Stateful Node Resources.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "tagKey": {
                                          "type": "string",
                                          "description": "Tag Key for Stateful Node Resources.\n",
                                          "example": "env"
                                        },
                                        "tagValue": {
                                          "type": "string",
                                          "description": "Tag Value for Stateful Node Resources.\n",
                                          "example": "staging"
                                        }
                                      }
                                    },
                                    "maximum": 44
                                  },
                                  "managedServiceIdentities": {
                                    "type": "array",
                                    "description": "Add a user-assigned managed identity to the Stateful Node's VM.\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "resourceGroupName"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "name of the managed identity\n",
                                          "example": "mySI2"
                                        },
                                        "resourceGroupName": {
                                          "type": "string",
                                          "description": "The Resource Group that the user-assigned managed identity resides in.\n",
                                          "example": "myResourceGroup"
                                        },
                                        "subscriptionId": {
                                          "type": "string",
                                          "description": "Defines the subscription ID of the managed service identities.\n\nRequired if the managed service identity is in a different subscription.\nTo use a user-assigned managed identity in a different subscription, you must | \nensure that the spotAccount's Service Principal has access to the defined subscription and that it |\nhas the two following permissions:\n1. Microsoft.ManagedIdentity/userAssignedIdentities/assign/action\n2. Microsoft.ManagedIdentity/userAssignedIdentities/read\n",
                                          "example": "12345678-abcd-1234-abcd-123456789ab"
                                        }
                                      }
                                    }
                                  },
                                  "extensions": {
                                    "type": "array",
                                    "description": "List of objects for azure extensions\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "type",
                                        "publisher",
                                        "apiVersion",
                                        "minorVersionAutoUpgrade"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "Required on compute.launchSpecification.extensions object\n",
                                          "example": "extensionName"
                                        },
                                        "type": {
                                          "type": "string",
                                          "description": "Required on compute.launchSpecification.extensions object\n",
                                          "example": "customScript"
                                        },
                                        "publisher": {
                                          "type": "string",
                                          "description": "Required on compute.launchSpecification.extensions object\n",
                                          "example": "Microsoft.Azure.Extensions"
                                        },
                                        "apiVersion": {
                                          "type": "string",
                                          "description": "The API version of the extension. Required if extension specified.\n",
                                          "example": "2.0"
                                        },
                                        "minorVersionAutoUpgrade": {
                                          "type": "boolean",
                                          "description": "Required on compute.launchSpecification.extensions object\n",
                                          "example": true
                                        },
                                        "publicSettings": {
                                          "type": "object",
                                          "description": "Object for public settings\n"
                                        },
                                        "protectedSettings": {
                                          "type": "object",
                                          "description": "Object for protected settings\n"
                                        },
                                        "enableAutomaticUpgrade": {
                                          "title": "enable automatic upgrade",
                                          "description": "Indicates whether the extension should be automatically upgraded by the platform if there is a newer version of the extension available.\n",
                                          "type": "boolean",
                                          "example": false
                                        },
                                        "protectedSettingsFromKeyVault": {
                                          "title": "Protected Settings from key vault",
                                          "description": "The extensions protected settings that are passed by reference, and consumed from key vault.\n",
                                          "type": "object",
                                          "required": [
                                            "sourceVault",
                                            "secretUrl"
                                          ],
                                          "properties": {
                                            "sourceVault": {
                                              "title": "sourceVault",
                                              "type": "string",
                                              "description": "The relative URL of the Key Vault containing the secret.\n",
                                              "example": "/subscriptions/1234-1234-1234/resourceGroups/rg_test/providers/Microsoft.KeyVault/vaults/testKeyVault"
                                            },
                                            "secretUrl": {
                                              "title": "secretUrl",
                                              "type": "string",
                                              "description": "The URL referencing a secret in a Key Vault.\n",
                                              "example": "https://testKeyVault.vault.azure.net/secrets/SecretTest/123456"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "dataDisks": {
                                    "type": "array",
                                    "description": "list of data disks to be attached to the stateful node's vm.\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "sizeGB",
                                        "lun",
                                        "type"
                                      ],
                                      "properties": {
                                        "sizeGB": {
                                          "type": "integer",
                                          "description": "The size of the data disk in GB, Required if dataDisks is specified.\n",
                                          "minimum": 1,
                                          "maximum": 1023,
                                          "example": 1
                                        },
                                        "lun": {
                                          "type": "integer",
                                          "description": "The lun of the data disk.\n",
                                          "example": 1
                                        },
                                        "type": {
                                          "type": "string",
                                          "description": "The type of the data disk\n",
                                          "enum": [
                                            "Standard_LRS",
                                            "Premium_LRS",
                                            "StandardSSD_LRS",
                                            "UltraSSD_LRS",
                                            "StandardSSD_ZRS",
                                            "Premium_ZRS",
                                            "PremiumV2_LRS"
                                          ],
                                          "example": "Standard_LRS"
                                        },
                                        "caching": {
                                          "type": "string",
                                          "description": "Specifies the host caching requirements. With disk caching enabled, VMs can achieve higher levels of performance.\n* If not specified, the Azure default behavior will be applied.\n",
                                          "enum": [
                                            "None",
                                            "ReadOnly",
                                            "ReadWrite"
                                          ],
                                          "example": "ReadOnly"
                                        }
                                      }
                                    },
                                    "minimum": 0,
                                    "maximum": 4
                                  },
                                  "osDisk": {
                                    "type": "object",
                                    "description": "Specify OS disk specification other than default.\n",
                                    "required": [
                                      "type"
                                    ],
                                    "properties": {
                                      "type": {
                                        "type": "string",
                                        "description": "The type of the OS disk.\n",
                                        "enum": [
                                          "Standard_LRS",
                                          "Premium_LRS",
                                          "StandardSSD_LRS",
                                          "StandardSSD_ZRS",
                                          "Premium_ZRS"
                                        ],
                                        "example": "Standard_LRS"
                                      },
                                      "sizeGB": {
                                        "type": "integer",
                                        "description": "The size of the data disk in GB.\n",
                                        "minimum": 1,
                                        "maximum": 1023,
                                        "example": 30
                                      },
                                      "caching": {
                                        "type": "string",
                                        "description": "Specifies the host caching requirements. With disk caching enabled, VMs can achieve higher levels of performance.\n* If not specified, the Azure default behavior will be applied.\n",
                                        "enum": [
                                          "None",
                                          "ReadOnly",
                                          "ReadWrite"
                                        ],
                                        "example": "ReadOnly"
                                      }
                                    }
                                  },
                                  "secrets": {
                                    "title": "secrets",
                                    "type": "array",
                                    "description": "Set of certificates that should be installed on the VM\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "sourceVault",
                                        "vaultCertificates"
                                      ],
                                      "properties": {
                                        "sourceVault": {
                                          "type": "object",
                                          "description": "The key vault reference, contains the required certificates\n",
                                          "required": [
                                            "resourceGroupName",
                                            "name"
                                          ],
                                          "properties": {
                                            "resourceGroupName": {
                                              "type": "string",
                                              "description": "The resource group name of the key vault\n"
                                            },
                                            "name": {
                                              "type": "string",
                                              "description": "The name of the key vault\n"
                                            }
                                          }
                                        },
                                        "vaultCertificates": {
                                          "type": "array",
                                          "description": "The required certificate references\n",
                                          "items": {
                                            "type": "object",
                                            "required": [
                                              "certificateUrl",
                                              "certificateStore"
                                            ],
                                            "properties": {
                                              "certificateUrl": {
                                                "type": "string",
                                                "description": "The URL of the certificate under the key vault\n"
                                              },
                                              "certificateStore": {
                                                "type": "string",
                                                "description": "The certificate store directory the VM. The directory is created in the LocalMachine account.\n* This field is required only when using windows OS type\n* This field must be ‘null’ when the OS type is Linux\n"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "bootDiagnostics": {
                                    "type": "object",
                                    "description": "Will enable boot diagnostics in Azure when a new VM is launched",
                                    "required": [
                                      "isEnabled",
                                      "type"
                                    ],
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "description": "Allows you to enable and disable the configuration of boot diagnostics at launch",
                                        "example": true
                                      },
                                      "type": {
                                        "type": "string",
                                        "description": "Defines the type of storage on VM launch  in Azure.",
                                        "enum": [
                                          "managed",
                                          "unmanaged"
                                        ],
                                        "example": "unmanaged"
                                      },
                                      "storageUri": {
                                        "type": "string",
                                        "description": "The storage URI that is used if type is unmanaged. The storage URI must follow the blob storage URI format (\"https://<blobstoragename>.blob.core.windows.net/\"). StorageUri is required if the type is unmanaged. StorageUri must be ‘null’ in case the boot diagnostics type is managed",
                                        "example": "https://example.blob.core.windows.net/"
                                      }
                                    }
                                  },
                                  "licenseType": {
                                    "type": "string",
                                    "description": "Specify an existing Azure license type to use when launching new VMs.\n* Valid values for Windows OS: \"Windows_Server\", \"Windows_Client\"\n* Valid values for Linux OS: \"RHEL_BYOS\", \"SLES_BYOS\"\n",
                                    "example": "Windows_Client"
                                  },
                                  "security": {
                                    "type": "object",
                                    "description": "Specifies the Security related profile settings for the virtual machine.\n",
                                    "properties": {
                                      "securityType": {
                                        "type": "string",
                                        "description": "Security type refers to the different security features of a virtual machine.\nSecurity features like Trusted launch virtual machines help to improve the security of Azure generation 2 virtual machines.\n",
                                        "enum": [
                                          "Standard",
                                          "TrustedLaunch",
                                          "ConfidentialVM"
                                        ],
                                        "example": "TrustedLaunch"
                                      },
                                      "secureBootEnabled": {
                                        "type": "boolean",
                                        "description": "Specifies whether secure boot should be enabled on the virtual machine.\n",
                                        "example": true
                                      },
                                      "vTpmEnabled": {
                                        "type": "boolean",
                                        "description": "Specifies whether vTPM should be enabled on the virtual machine.\n",
                                        "example": true
                                      },
                                      "encryptionAtHost": {
                                        "type": "boolean",
                                        "description": "Enables the Host Encryption for the virtual machine. The Encryption at host will be disabled unless this property is set to true for the resource.\n",
                                        "example": true
                                      },
                                      "confidentialOsDiskEncryption": {
                                        "type": "boolean",
                                        "description": "Confidential disk encryption binds the disk encryption keys to the VM's TPM, ensuring VM-only access.\nThe security type must be \"ConfidentialVM\" to enable defining this preference as “true”.\n",
                                        "example": false
                                      }
                                    }
                                  },
                                  "proximityPlacementGroups": {
                                    "type": "array",
                                    "description": "The proximity placement group where the VM is launched.",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "name",
                                        "resourceGroupName"
                                      ],
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "The name of the proximity placement group.",
                                          "example": "testPPG"
                                        },
                                        "resourceGroupName": {
                                          "type": "string",
                                          "description": "The resource group name of the proximity placement group.",
                                          "example": "testResourceGroup"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "persistence": {
                            "type": "object",
                            "title": "Stateful Node Persistence",
                            "description": "Persistence settings for stateful node\n",
                            "properties": {
                              "shouldPersistOsDisk": {
                                "type": "boolean",
                                "description": "Should persist os disk.\n",
                                "example": true
                              },
                              "osDiskPersistenceMode": {
                                "type": "string",
                                "enum": [
                                  "reattach",
                                  "onLaunch"
                                ],
                                "description": "The way persistency is handled in case of os disk persistence.\n",
                                "example": "onLaunch"
                              },
                              "shouldPersistDataDisks": {
                                "type": "boolean",
                                "description": "Should persist data disks.\n",
                                "example": true
                              },
                              "dataDisksPersistenceMode": {
                                "type": "string",
                                "enum": [
                                  "reattach",
                                  "onLaunch"
                                ],
                                "description": "The way persistency is handled in case of data disks persistence.\n",
                                "example": "reattach"
                              },
                              "shouldPersistNetwork": {
                                "type": "boolean",
                                "description": "Should persist network.\n",
                                "example": true
                              }
                            }
                          },
                          "scheduling": {
                            "type": "object",
                            "title": "Stateful Node Scheduling",
                            "description": "Scheduling settings for stateful node\n",
                            "properties": {
                              "tasks": {
                                "type": "array",
                                "description": "List of scheduled tasks to excute for the stateful node's.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "isEnabled",
                                    "type",
                                    "cronExpression"
                                  ],
                                  "properties": {
                                    "isEnabled": {
                                      "type": "boolean",
                                      "description": "Is scheduled task enabled for stateful node.\n",
                                      "example": true
                                    },
                                    "type": {
                                      "type": "string",
                                      "description": "The type of the scheduled task\n",
                                      "enum": [
                                        "pause",
                                        "resume",
                                        "recycle"
                                      ],
                                      "example": "recycle"
                                    },
                                    "cronExpression": {
                                      "type": "string",
                                      "description": "A expression which describes when to execute the scheduled task (UTC)\n",
                                      "example": "35 12 * * *"
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "health": {
                            "type": "object",
                            "title": "Stateful Node Health",
                            "description": "Set health check and auto-healing of unhealthy VMs.\n",
                            "properties": {
                              "healthCheckTypes": {
                                "type": "array",
                                "description": "Health check types to use in order to validate VM health.\n",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "vmState",
                                    "applicationGateway"
                                  ]
                                },
                                "example": [
                                  "vmState"
                                ]
                              },
                              "gracePeriod": {
                                "type": "integer",
                                "description": "The amount of time (in seconds) after a new VM has launched before terminating the old VM.\n",
                                "example": 120,
                                "minimum": 0
                              },
                              "autoHealing": {
                                "type": "boolean",
                                "example": true,
                                "description": "Enable auto-healing of unhealthy VMs.\n"
                              },
                              "unhealthyDuration": {
                                "type": "integer",
                                "description": "Amount of time (in seconds) for the VM to remain unhealthy before a replacement is triggered.\n",
                                "example": 360,
                                "minimum": 120
                              }
                            }
                          },
                          "integrations": {
                            "type": "object",
                            "title": "Stateful Node Integrations",
                            "description": "Configure integrations for the stateful node VM.\n",
                            "properties": {
                              "insights": {
                                "type": "object",
                                "description": "Configure insights for the stateful node VM.\n",
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "description": "Enable insights for the stateful node.\n"
                                  },
                                  "dataCollectionRuleId": {
                                    "type": "string",
                                    "description": "The ID of the data collection rule to be associated with the Stateful Node.",
                                    "example": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Insights/dataCollectionRules/myDataCollectionRule"
                                  }
                                }
                              }
                            }
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2022-01-01T00:00:00.000+0000"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2022-01-01T00:00:00.000+0000"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update Stateful Node Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/ssn-12345678"
                            },
                            "method": {
                              "example": "UPDATE"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1statefulNode/post/requestBody/content/application~1json/schema/allOf/0/properties/statefulNode"
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:statefulNode"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Stateful Node",
        "description": "Delete an existing stateful node from the account.\n",
        "operationId": "azureStatefulNodeDelete",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1compute~1statefulNode~1%7BnodeId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Delete Azure Stateful Node",
                    "properties": {
                      "deallocationConfig": {
                        "type": "object",
                        "title": "Delete Azure Stateful Node Configuration",
                        "required": [
                          "shouldTerminateVm"
                        ],
                        "properties": {
                          "shouldTerminateVm": {
                            "type": "boolean",
                            "description": "Indicates whether to delete the stateful node's VM.\n",
                            "example": true
                          },
                          "shouldDeregisterFromLb": {
                            "type": "boolean",
                            "default": true,
                            "description": "Indicates whether to deregister the stateful node's VM from any type of load balancer.\nCan be changed to false only when shouldTerminateVms is 'false'\n",
                            "example": true
                          },
                          "networkDeallocationConfig": {
                            "type": "object",
                            "title": "Network Deallocation Config",
                            "description": "Network Deallocation Configuration.\n",
                            "required": [
                              "shouldDeallocate"
                            ],
                            "properties": {
                              "shouldDeallocate": {
                                "type": "boolean",
                                "description": "Indicates whether to delete the stateful node's network resources.\n",
                                "example": true
                              },
                              "ttlInHours": {
                                "type": "integer",
                                "default": 96,
                                "description": "Hours to keep the resource alive before deletion.\n",
                                "example": 1,
                                "minimum": 0,
                                "maximum": 371
                              }
                            }
                          },
                          "diskDeallocationConfig": {
                            "type": "object",
                            "title": "Disk Deallocation Config",
                            "description": "Disk Deallocation Configuration.\n",
                            "required": [
                              "shouldDeallocate"
                            ],
                            "properties": {
                              "shouldDeallocate": {
                                "type": "boolean",
                                "description": "Indicates whether to delete the stateful node's disk resources.\n",
                                "example": true
                              },
                              "ttlInHours": {
                                "type": "integer",
                                "default": 96,
                                "description": "Hours to keep the resource alive before deletion.\n",
                                "example": 1,
                                "minimum": 0,
                                "maximum": 371
                              }
                            }
                          },
                          "snapshotDeallocationConfig": {
                            "type": "object",
                            "title": "Snapshot Deallocation Config",
                            "description": "Snapshot Deallocation Configuration.\n",
                            "required": [
                              "shouldDeallocate"
                            ],
                            "properties": {
                              "shouldDeallocate": {
                                "type": "boolean",
                                "description": "Indicates whether to delete the stateful node's snapshot resources.\n",
                                "example": true
                              },
                              "ttlInHours": {
                                "type": "integer",
                                "default": 96,
                                "description": "Hours to keep the resource alive before deletion.\n",
                                "example": 1,
                                "minimum": 0,
                                "maximum": 371
                              }
                            }
                          },
                          "publicIpDeallocationConfig": {
                            "type": "object",
                            "title": "Public IP Deallocation Config",
                            "description": "Public IP Deallocation Configuration.\n",
                            "required": [
                              "shouldDeallocate"
                            ],
                            "properties": {
                              "shouldDeallocate": {
                                "type": "boolean",
                                "description": "Indicates whether to delete the stateful node's public ip resources.\n",
                                "example": true
                              },
                              "ttlInHours": {
                                "type": "integer",
                                "description": "Hours to keep the resource alive before deletion.\n",
                                "example": 1,
                                "minimum": 0,
                                "maximum": 371,
                                "default": 96
                              }
                            }
                          },
                          "shouldRevertToOd": {
                            "type": "boolean",
                            "default": false,
                            "description": "Indicates whether to change the stateful node's VM lifecycle to on-demand. Can be changed to true only when shouldTerminateVms is 'false'.\n",
                            "example": false
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Delete Stateful Node Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/ssn-12345678"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/{nodeId}/resources": {
      "get": {
        "summary": "Get Stateful Node Resources",
        "description": "Get the node's attached resources (storage and network interfaces).\n",
        "operationId": "azureStatefulNodeGetResources",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1compute~1statefulNode~1%7BnodeId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Get Stateful Node Resources Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/ssn-12345678/resources"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Stateful Node Resources",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "example": "ssn-12345678",
                                    "description": "The Stateful Node ID.\n"
                                  },
                                  "name": {
                                    "type": "string",
                                    "example": "MyStatefulNode",
                                    "description": "The name of the disk.\n"
                                  },
                                  "resourceGroupName": {
                                    "type": "string",
                                    "example": "dataDiskResourceGroup",
                                    "description": "The resource group name of the stateful node.\n"
                                  },
                                  "network": {
                                    "type": "object",
                                    "title": "Stateful Node Network Resources",
                                    "description": "Stateful Node Network Resources.\n",
                                    "properties": {
                                      "virtualNetwork": {
                                        "type": "object",
                                        "title": "Stateful Node Virtual Network Resource",
                                        "description": "Stateful Node Virtual Network Resource.\n",
                                        "properties": {
                                          "name": {
                                            "type": "string",
                                            "example": "MyVirtualNetwork",
                                            "description": "The name of the disk.\n"
                                          },
                                          "resourceGroupName": {
                                            "type": "string",
                                            "example": "virtualNetworkResourceGroup",
                                            "description": "The resource group name of the virtual network.\n"
                                          }
                                        }
                                      },
                                      "networkInterfaces": {
                                        "type": "array",
                                        "description": "Network Interfaces.\n",
                                        "items": {
                                          "type": "object",
                                          "title": "Stateful Node Network Instance Resources",
                                          "properties": {
                                            "name": {
                                              "type": "string",
                                              "example": "MyNetworkInterface",
                                              "description": "The name of the disk.\n"
                                            },
                                            "resourceGroupName": {
                                              "type": "string",
                                              "example": "networkInterfaceResourceGroup",
                                              "description": "The resource group name of the network interface.\n"
                                            },
                                            "isPrimary": {
                                              "type": "boolean",
                                              "example": true,
                                              "description": "Is the network interface primary.\n"
                                            },
                                            "networkSecurityGroup": {
                                              "type": "object",
                                              "title": "Stateful Node Network Security Group",
                                              "properties": {
                                                "name": {
                                                  "type": "string",
                                                  "example": "MyNetworkSecurityGroup",
                                                  "description": "The name of the disk.\n"
                                                },
                                                "resourceGroupName": {
                                                  "type": "string",
                                                  "example": "networkSecurityGroupResourceGroup",
                                                  "description": "The resource group name of the network interface.\n"
                                                }
                                              }
                                            },
                                            "ipConfigurations": {
                                              "type": "array",
                                              "description": "IP Configurations.\n",
                                              "items": {
                                                "type": "object",
                                                "title": "Stateful IP Configuration Resources",
                                                "properties": {
                                                  "name": {
                                                    "type": "string",
                                                    "example": "MyIPConfiguration",
                                                    "description": "The name of the disk.\n"
                                                  },
                                                  "isPrimary": {
                                                    "type": "boolean",
                                                    "example": true,
                                                    "description": "Is the network interface primary.\n"
                                                  },
                                                  "subnet": {
                                                    "type": "object",
                                                    "title": "Stateful Node Subnet Resource",
                                                    "properties": {
                                                      "name": {
                                                        "type": "string",
                                                        "example": "MyNetworkInterface",
                                                        "description": "The name of the disk.\n"
                                                      },
                                                      "resourceGroupName": {
                                                        "type": "string",
                                                        "example": "networkInterfaceResourceGroup",
                                                        "description": "The resource group name of the network interface.\n"
                                                      },
                                                      "addressPrefix": {
                                                        "type": "string",
                                                        "example": "addressPrefix",
                                                        "description": "The resource group name of the network interface.\n"
                                                      }
                                                    }
                                                  },
                                                  "publicIp": {
                                                    "type": "object",
                                                    "title": "Stateful Node Subnet Resource",
                                                    "properties": {
                                                      "name": {
                                                        "type": "string",
                                                        "example": "MyNetworkInterface",
                                                        "description": "The name of the disk.\n"
                                                      },
                                                      "resourceGroupName": {
                                                        "type": "string",
                                                        "example": "networkInterfaceResourceGroup",
                                                        "description": "The resource group name of the network interface.\n"
                                                      },
                                                      "ipAddress": {
                                                        "type": "string",
                                                        "example": "ipAddress",
                                                        "description": "The resource group name of the network interface.\n"
                                                      },
                                                      "skuName": {
                                                        "type": "string",
                                                        "example": "skuName",
                                                        "description": "The resource group name of the network interface.\n"
                                                      }
                                                    }
                                                  },
                                                  "privateIpAddress": {
                                                    "type": "string",
                                                    "example": "privateIpAddress",
                                                    "description": "Is the network interface primary.\n"
                                                  },
                                                  "privateIPAddressVersion": {
                                                    "type": "string",
                                                    "example": "privateIPAddressVersion",
                                                    "description": "Is the network interface primary.\n"
                                                  },
                                                  "privateIpAllocationMethod": {
                                                    "type": "string",
                                                    "example": "privateIpAllocationMethod",
                                                    "description": "Is the network interface primary.\n"
                                                  },
                                                  "applicationSecurityGroups": {
                                                    "type": "array",
                                                    "description": "IP Configurations.\n",
                                                    "items": {
                                                      "type": "object",
                                                      "title": "Stateful IP Configuration Resources",
                                                      "properties": {
                                                        "name": {
                                                          "type": "string",
                                                          "example": "MyIPConfiguration",
                                                          "description": "The name of the disk.\n"
                                                        },
                                                        "resourceGroupName": {
                                                          "type": "string",
                                                          "example": "networkSecurityGroupResourceGroup",
                                                          "description": "The resource group name of the network interface.\n"
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            },
                                            "enableAcceleratedNetworking": {
                                              "type": "boolean",
                                              "example": true,
                                              "description": "Is accelerated networking enabled for the network interface.\n"
                                            },
                                            "enableIpForwarding": {
                                              "type": "boolean",
                                              "example": true,
                                              "description": "Is IP forwarding enabled for the network interface.\n"
                                            },
                                            "macAddress": {
                                              "type": "string",
                                              "description": "The MAC address of the network interface.\n"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "storage": {
                                    "type": "object",
                                    "title": "Stateful Node Storage Resources",
                                    "description": "Stateful Node Storage Resources.\n",
                                    "properties": {
                                      "osDisk": {
                                        "type": "object",
                                        "title": "Stateful Node Os Disk",
                                        "description": "Stateful Node Os Disk.\n",
                                        "properties": {
                                          "name": {
                                            "type": "string",
                                            "example": "myOsDisk",
                                            "description": "The name of the os disk.\n"
                                          },
                                          "resourceGroupName": {
                                            "type": "string",
                                            "example": "myResourceGroup",
                                            "description": "The name of the resource group of the os disk.\n"
                                          },
                                          "osType": {
                                            "type": "string",
                                            "example": "Windows",
                                            "description": "The os type of the os disk.\n"
                                          },
                                          "storageAccountType": {
                                            "type": "string",
                                            "example": "virtualNetworkResourceGroup",
                                            "description": "The disk type.\n"
                                          },
                                          "sizeGB": {
                                            "type": "integer",
                                            "example": 1,
                                            "description": "The size of the os disk.\n"
                                          },
                                          "snapshot": {
                                            "type": "string",
                                            "example": "myOsSnapshot",
                                            "description": "The name of the os disk snapshot.\n"
                                          },
                                          "lastCompletedSnapshot": {
                                            "type": "string",
                                            "readOnly": true,
                                            "format": "date-time",
                                            "example": "2022-01-01T00:00:00.000+0000"
                                          }
                                        }
                                      },
                                      "dataDisks": {
                                        "type": "array",
                                        "description": "Data Disks.\n",
                                        "items": {
                                          "type": "object",
                                          "title": "Stateful Node Data Disk Resources",
                                          "properties": {
                                            "name": {
                                              "type": "string",
                                              "example": "MyDataDisk",
                                              "description": "The name of the disk.\n"
                                            },
                                            "resourceGroupName": {
                                              "type": "string",
                                              "example": "myDataDiskResourceGroup",
                                              "description": "The data disk resource group.\n"
                                            },
                                            "storageAccountType": {
                                              "type": "string",
                                              "example": "virtualNetworkResourceGroup",
                                              "description": "The storage account type.\n"
                                            },
                                            "sizeGB": {
                                              "type": "integer",
                                              "example": 1,
                                              "description": "The size of the data disk.\n"
                                            },
                                            "lun": {
                                              "type": "integer",
                                              "example": 1,
                                              "description": "The lun number of the data disk.\n"
                                            },
                                            "snapshot": {
                                              "type": "string",
                                              "example": "mySnapshot",
                                              "description": "The snapshot name for the data disk.\n"
                                            },
                                            "lastCompletedSnapshot": {
                                              "type": "string",
                                              "readOnly": true,
                                              "format": "date-time",
                                              "example": "2022-01-01T00:00:00.000+0000"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:statefulNode:resources"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/{nodeId}/status": {
      "get": {
        "summary": "Get Stateful Node Status",
        "description": "Get the status of a specific stateful node.",
        "operationId": "azureStatefulNodeGetStatus",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1compute~1statefulNode~1%7BnodeId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Get Stateful Node Status Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/ssn-12345678/status"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1statefulNode~1status/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:statefulNode:status"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/status": {
      "get": {
        "summary": "Get All Stateful Node Statuses",
        "description": "Get the statuses of all stateful nodes in a specific account.",
        "operationId": "azureStatefulNodeGetAllStatus",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "List Stateful Node Status Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/status"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Azure Stateful Node Status",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "example": "ssn-12345678",
                                    "readOnly": true,
                                    "description": "Azure Stateful Node ID\n"
                                  },
                                  "name": {
                                    "type": "string",
                                    "example": "Spot Stateful Node",
                                    "description": "Azure Stateful Node Name\n"
                                  },
                                  "region": {
                                    "type": "string",
                                    "example": "westus2",
                                    "description": "The Azure region of the Stateful Node.\n"
                                  },
                                  "resourceGroupName": {
                                    "type": "string",
                                    "example": "spotResourceGroup",
                                    "description": "Name of the Resource Group of the Stateful Node.\n"
                                  },
                                  "status": {
                                    "type": "string",
                                    "example": "active",
                                    "description": "State of the Stateful Node.\n"
                                  },
                                  "vmName": {
                                    "type": "string",
                                    "example": "spot-12345678-vm",
                                    "description": "Azure Stateful Node's VM Name.\n"
                                  },
                                  "vmSize": {
                                    "type": "string",
                                    "example": "spot-12345678-vm",
                                    "description": "Type of the VM.\n"
                                  },
                                  "lifecycle": {
                                    "type": "string",
                                    "description": "The desired type of VM.\n",
                                    "example": "od"
                                  },
                                  "rollbackReason": {
                                    "type": "string",
                                    "description": "Reason to roll back\n",
                                    "example": "Failed to launch virtual machine in Azure."
                                  },
                                  "errorReason": {
                                    "type": "string",
                                    "description": "Error reason\n",
                                    "example": "Deallocate action failed. Please contact our support team."
                                  },
                                  "privateIp": {
                                    "type": "string",
                                    "example": "172.23.4.20",
                                    "description": "Private IP"
                                  },
                                  "publicIp": {
                                    "type": "string",
                                    "example": "172.23.4.20",
                                    "description": "Public IP"
                                  },
                                  "vmHealthStatus": {
                                    "type": "string",
                                    "enum": [
                                      "HEALTHY",
                                      "UNHEALTHY",
                                      "UNKNOWN"
                                    ],
                                    "description": "Health Status"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2022-01-01T00:00:00.000+0000"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2022-01-01T00:00:00.000+0000"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:statefulNode:status"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/{nodeId}/state": {
      "put": {
        "summary": "Update Stateful Node State",
        "description": "Update the stateful node state.",
        "operationId": "azureStatefulNodeChangeState",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1compute~1statefulNode~1%7BnodeId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Change State Of Stateful Node",
                    "properties": {
                      "state": {
                        "type": "string",
                        "enum": [
                          "pause",
                          "resume",
                          "recycle"
                        ],
                        "title": "Stateful Node State Change",
                        "example": "pause"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Change State Of Stateful Node Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/ssn-12345678/state"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/resourceGroup/{resourceGroupName}/virtualMachine/{virtualMachineName}/importConfiguration": {
      "get": {
        "summary": "Get Stateful Node from an Azure VM",
        "description": "Get the configuration of a stateful node that was built from an Azure VM. This configuration is used for the [Import VM to a Stateful Node API](https://spec.dev.spot.io/#operation/azureStatefulNodeImportVm).\n",
        "operationId": "azureStatefulNodeGetImportConfiguration",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "resourceGroupName",
            "example": "importResourceGroup",
            "description": "Name of the Resource Group of the imported VM.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "virtualMachineName",
            "example": "spot-12345678-vm",
            "description": "Name of the imported VM.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1azure~1compute~1statefulNode/post/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/import": {
      "post": {
        "summary": "Import VM to a Stateful Node",
        "description": "Import an Azure VM and create a stateful node by providing a node configuration.",
        "operationId": "azureStatefulNodeImportVm",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Import VM to a Stateful Node",
                    "properties": {
                      "statefulNodeImport": {
                        "type": "object",
                        "title": "Azure Import Stateful Node",
                        "required": [
                          "originalVmName",
                          "resourceGroupName"
                        ],
                        "properties": {
                          "statefulImportId": {
                            "type": "string",
                            "example": "sin-12345678",
                            "readOnly": true,
                            "description": "Azure Import Stateful Node ID\n"
                          },
                          "originalVmName": {
                            "type": "string",
                            "example": "Spot Import Stateful Node",
                            "description": "Azure Import Stateful Node Name\n"
                          },
                          "resourceGroupName": {
                            "type": "string",
                            "example": "spotResourceGroup",
                            "description": "Name of the Resource Group for Stateful Node.\n"
                          },
                          "drainingTimeout": {
                            "type": "integer",
                            "example": 1,
                            "description": "Time in seconds before shutdown incase of load balancing.\n",
                            "minimum": 0,
                            "maximum": 1800,
                            "default": 120
                          },
                          "resourcesRetentionTime": {
                            "type": "integer",
                            "example": 1,
                            "description": "Time in hours to delete the original resources after the import has finished.\n",
                            "minimum": 0,
                            "maximum": 731,
                            "default": 96
                          },
                          "convertUnmanagedDisks": {
                            "type": "boolean",
                            "example": true,
                            "description": "Converts virtual machine unmanaged disks to managed disks.\n",
                            "default": false
                          },
                          "node": {
                            "$ref": "#/paths/~1azure~1compute~1statefulNode/post/requestBody/content/application~1json/schema/allOf/0/properties/statefulNode"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Import Stateful Node Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/import"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1azure~1compute~1statefulNode~1import/post/requestBody/content/application~1json/schema/allOf/0/properties/statefulNodeImport"
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:stateful:import:node"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/import/{importId}/status": {
      "get": {
        "summary": "Get Stateful Node Import Status",
        "description": "Get the import process status of a stateful node.\n",
        "operationId": "azureStatefulNodeGetImportStatus",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "importId",
            "example": "sin-12345678",
            "description": "Import Id.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Get Stateful Node Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/import/ssn-12345678/status"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Import Stateful Node",
                                "properties": {
                                  "statefulImportId": {
                                    "type": "string",
                                    "example": "sin-12345678",
                                    "description": "The Import Stateful Node Id.\n"
                                  },
                                  "statefulNodeId": {
                                    "type": "string",
                                    "example": "ssn-12345678",
                                    "description": "The Import Stateful Node Id.\n"
                                  },
                                  "vmName": {
                                    "type": "string",
                                    "example": "spot-12345678-spot",
                                    "description": "The name of the imported VM.\n"
                                  },
                                  "state": {
                                    "type": "string",
                                    "example": "ImportStart",
                                    "description": "State of the imported stateful node."
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:stateful:import:node"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/{nodeId}/osDisk/swap": {
      "put": {
        "summary": "Swap OS Disk to Stateful Node",
        "description": "Configure a new managed OS disk for an OS persisted paused/stopped Stateful Node.",
        "operationId": "azureStatefulNodeSwapOSDisk",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1compute~1statefulNode~1%7BnodeId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Swap OS Disk to Stateful Node.",
                    "required": [
                      "osDiskName",
                      "osDiskResourceGroupName"
                    ],
                    "properties": {
                      "osDiskName": {
                        "type": "string",
                        "example": "OsDisk",
                        "description": "Specify the name of the new OS disk.\n"
                      },
                      "osDiskResourceGroupName": {
                        "type": "string",
                        "example": "MyResourceGroup",
                        "description": "The resource group name in which the new OS disk exists.\n"
                      },
                      "shouldTerminate": {
                        "type": "boolean",
                        "description": "Indicates whether to delete the original OS disk.\n",
                        "default": true,
                        "example": false
                      },
                      "retentionTime": {
                        "type": "integer",
                        "description": "Time to keep the original OS disk before deletion (hours).\n",
                        "minimum": 0,
                        "example": 1
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ok"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/{nodeId}/dataDisk/attach": {
      "put": {
        "summary": "Attach Data Disk to Stateful Node",
        "description": "Create a new data disk and attaches it to the stateful node.",
        "operationId": "azureStatefulNodeAttachDataDisk",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1compute~1statefulNode~1%7BnodeId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Attach Data Disk To Stateful Node",
                    "required": [
                      "dataDiskName",
                      "dataDiskResourceGroupName",
                      "sizeGB",
                      "storageAccountType"
                    ],
                    "properties": {
                      "dataDiskName": {
                        "type": "string",
                        "example": "MyDisk",
                        "description": "The name of the created data disk.\n"
                      },
                      "dataDiskResourceGroupName": {
                        "type": "string",
                        "example": "dataDiskResourceGroup",
                        "description": "The resource group name in which the data disk will be created.\n"
                      },
                      "sizeGB": {
                        "type": "integer",
                        "description": "The size of the data disk in GB, Required if dataDisks is specified.\n",
                        "minimum": 1,
                        "maximum": 1023,
                        "example": 1
                      },
                      "lun": {
                        "type": "integer",
                        "default": "ordinal",
                        "description": "The LUN of the data disk.\nIf not defined, the LUN will be set in order.\n",
                        "example": 1
                      },
                      "storageAccountType": {
                        "type": "string",
                        "description": "The type of the data disk.\n",
                        "enum": [
                          "Standard_LRS",
                          "Premium_LRS",
                          "StandardSSD_LRS",
                          "UltraSSD_LRS",
                          "StandardSSD_ZRS",
                          "Premium_ZRS",
                          "PremiumV2_LRS"
                        ],
                        "example": "Standard_LRS"
                      },
                      "zone": {
                        "type": "string",
                        "enum": [
                          "1",
                          "2",
                          "3"
                        ],
                        "example": "1",
                        "description": "The Availability Zone in which the data disk will be created. If not defined, the data disk will be created regionally."
                      },
                      "caching": {
                        "type": "string",
                        "description": "Specifies the host caching requirements. With disk caching enabled, VMs can achieve higher levels of performance.\n* If not specified, the Azure default behavior will be applied.\n",
                        "enum": [
                          "None",
                          "ReadOnly",
                          "ReadWrite"
                        ],
                        "example": "ReadOnly"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Attach Data Disk To Stateful Node Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/ssn-12345678/dataDisk/attach"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Azure Disk",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "example": "MyDisk",
                                    "description": "The name of the disk.\n"
                                  },
                                  "resourceGroupName": {
                                    "type": "string",
                                    "example": "dataDiskResourceGroup",
                                    "description": "The resource group name of the disk.\n"
                                  },
                                  "region": {
                                    "type": "string",
                                    "example": "westus2",
                                    "description": "The Azure region of the disk.\n"
                                  },
                                  "zone": {
                                    "type": "string",
                                    "enum": [
                                      "1",
                                      "2",
                                      "3"
                                    ],
                                    "example": "1",
                                    "description": "Azure Availability Zone of the disk."
                                  },
                                  "size": {
                                    "type": "integer",
                                    "description": "The size of the disk in GB.\n",
                                    "example": 1
                                  },
                                  "lun": {
                                    "type": "integer",
                                    "default": "ordinal",
                                    "description": "The lun of the disk.\n",
                                    "example": 1
                                  },
                                  "accountType": {
                                    "type": "string",
                                    "description": "The type of the disk.\n",
                                    "enum": [
                                      "Standard_LRS",
                                      "Premium_LRS",
                                      "StandardSSD_LRS",
                                      "UltraSSD_LRS",
                                      "StandardSSD_ZRS",
                                      "Premium_ZRS",
                                      "PremiumV2_LRS"
                                    ],
                                    "example": "Standard_LRS"
                                  },
                                  "managedBy": {
                                    "type": "string",
                                    "example": "spot-12345678-vm",
                                    "description": "The resource who manages the disk.\n"
                                  },
                                  "tags": {
                                    "type": "array",
                                    "description": "Unique Key-Value pairs.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "tagKey": {
                                          "type": "string",
                                          "description": "Tag Key of the disk.\n",
                                          "example": "env"
                                        },
                                        "tagValue": {
                                          "type": "string",
                                          "description": "Tag Value for disk.\n",
                                          "example": "staging"
                                        }
                                      }
                                    },
                                    "maximum": 44
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:disk"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/{nodeId}/dataDisk/detach": {
      "put": {
        "summary": "Detach Data Disk From Stateful Node",
        "description": "Detach a data disk from a stateful node.",
        "operationId": "azureStatefulNodeDetachDataDisk",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1compute~1statefulNode~1%7BnodeId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Attach Data Disk To Stateful Node",
                    "required": [
                      "dataDiskName",
                      "dataDiskResourceGroupName",
                      "shouldDeallocate"
                    ],
                    "properties": {
                      "dataDiskName": {
                        "type": "string",
                        "example": "MyDisk",
                        "description": "The name of the created data disk.\n"
                      },
                      "dataDiskResourceGroupName": {
                        "type": "string",
                        "example": "dataDiskResourceGroup",
                        "description": "The resource group name in which the data disk exists.\n"
                      },
                      "shouldDeallocate": {
                        "type": "boolean",
                        "description": "Indicates whether to delete the data disk in addition to detach.\n",
                        "example": true
                      },
                      "ttlInHours": {
                        "type": "integer",
                        "default": 0,
                        "description": "Hours to keep the disk alive before deletion.\n",
                        "example": 1
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Detach Data Disk From Stateful Node Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/ssn-12345678/dataDisk/detach"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/{nodeId}/log": {
      "get": {
        "summary": "Get Stateful Node Logs",
        "description": "Get the logs of a stateful node according to severity and time period filter parameters.",
        "operationId": "azureStatefulNodeLogs",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1compute~1statefulNode~1%7BnodeId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/2"
          },
          {
            "in": "query",
            "name": "severity",
            "example": "WARN",
            "description": "Severity of log entries to extract.\n",
            "schema": {
              "type": "string",
              "enum": [
                "DEBUG",
                "WARN",
                "INFO",
                "ALL",
                "ERROR"
              ]
            }
          },
          {
            "in": "query",
            "name": "resourceId",
            "example": "ssn-12345678",
            "description": "Filter log extracted entires related to a specific resource id\n",
            "schema": {
              "type": "string",
              "default": null
            }
          },
          {
            "in": "query",
            "name": "limit",
            "example": 100,
            "description": "Maximum number of lines to extract in a response.\n",
            "schema": {
              "type": "integer",
              "maximum": 1000,
              "minimum": 0,
              "default": 500
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get Logs Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/ssn-12345678/log"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Logs",
                                "properties": {
                                  "message": {
                                    "type": "string",
                                    "example": "Successfully created stateful node"
                                  },
                                  "severity": {
                                    "type": "string",
                                    "example": "INFO"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2022-01-01T00:00:00.000Z"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:statefulNode:logs"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/cost": {
      "get": {
        "summary": "Get All Stateful Node Costs",
        "description": "Get the total costs of a single stateful node/all stateful nodes and for a specific time period.",
        "operationId": "azureGetAggregatedCosts",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/2"
          },
          {
            "in": "query",
            "name": "ownerId",
            "example": "ssn-12345678",
            "description": "Aggregates costs and usage by stateful node.\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get Aggregated Costs Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/cost"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Aggregated Costs",
                                "properties": {
                                  "usage": {
                                    "type": "object",
                                    "properties": {
                                      "spot": {
                                        "type": "object",
                                        "properties": {
                                          "hours": {
                                            "type": "number",
                                            "format": "float",
                                            "example": 2781.758
                                          }
                                        }
                                      },
                                      "od": {
                                        "type": "object",
                                        "properties": {
                                          "hours": {
                                            "type": "number",
                                            "format": "float",
                                            "example": 0
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "cost": {
                                    "type": "object",
                                    "properties": {
                                      "odCost": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 0
                                      },
                                      "spotPotentialCost": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 380.9154
                                      },
                                      "spotActualCost": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 118.7367
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:statefulNode:cost"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/cost/daily": {
      "get": {
        "summary": "Get All Stateful Node Aggregated Daily Costs",
        "description": "Get the total costs per day of a single stateful node/all stateful nodes and for a specific time period.",
        "operationId": "azureGetDailyAggregatedCosts",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/2"
          },
          {
            "in": "query",
            "name": "ownerId",
            "example": "ssn-12345678",
            "description": "Aggregates costs and usage daily by stateful node.\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get Daily Aggregated Costs Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/cost/daily"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Daily Aggregated Costs",
                                "properties": {
                                  "usage": {
                                    "type": "object",
                                    "properties": {
                                      "spot": {
                                        "type": "object",
                                        "properties": {
                                          "hours": {
                                            "type": "number",
                                            "format": "float",
                                            "example": 2781.758
                                          }
                                        }
                                      },
                                      "od": {
                                        "type": "object",
                                        "properties": {
                                          "hours": {
                                            "type": "number",
                                            "format": "float",
                                            "example": 0
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "cost": {
                                    "type": "object",
                                    "properties": {
                                      "odCost": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 0
                                      },
                                      "spotPotentialCost": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 380.9154
                                      },
                                      "spotActualCost": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 118.7367
                                      },
                                      "day": {
                                        "type": "string",
                                        "readOnly": true,
                                        "format": "date-time",
                                        "example": "2022-01-01T00:00:00.000+0000"
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:statefulNode:cost"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/compute/statefulNode/sizeUsage/daily": {
      "get": {
        "summary": "Get Stateful Node Size Usage",
        "description": "Get the daily costs per VM size of a single stateful node/all stateful nodes and for a specific time period.",
        "operationId": "azureGetDailyVmSizeUsage",
        "tags": [
          "Elastigroup Azure Stateful"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/2"
          },
          {
            "in": "query",
            "name": "ownerId",
            "example": "ssn-12345678",
            "description": "Aggregates VM size usage daily by stateful node.\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get Daily VM Size Usage Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/compute/statefulNode/sizeUsage/daily"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Daily VM Size Usage",
                                "properties": {
                                  "day": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2022-01-01T00:00:00.000+0000"
                                  },
                                  "cpus": {
                                    "type": "integer",
                                    "example": 60
                                  },
                                  "lifeCycle": {
                                    "type": "string",
                                    "example": "spot"
                                  },
                                  "vmSize": {
                                    "type": "string",
                                    "example": "standard_a1_v2"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:stateful:dailySizeUsage"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/group": {
      "get": {
        "summary": "List Elastigroups",
        "description": "List all GCP Elastigroups for a Spot Account\n",
        "operationId": "elastigroupGcpListAll",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1gcp~1gce~1group/post/requestBody/content/application~1json/schema/allOf/0"
                              }
                            },
                            "kind": {
                              "example": "spotinst:gcp:gce:group"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "summary": "Create Elastigroup",
        "description": "Create a new GCP Elastigroup",
        "operationId": "elastigroupGcpCreate",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Elastigroup Wrapper",
                    "required": [
                      "group"
                    ],
                    "properties": {
                      "group": {
                        "type": "object",
                        "title": "GCP Elastigroup",
                        "required": [
                          "capacity",
                          "compute"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "sig-1234567",
                            "readOnly": true,
                            "description": "GCP Elastigroup\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "spotinst-group",
                            "description": "GCP Elastigroup Name\n"
                          },
                          "description": {
                            "type": "string",
                            "example": "Some GCP Elastigroup description",
                            "description": "Description for your GCP Elastigroup\n"
                          },
                          "capacity": {
                            "title": "Capacity Units",
                            "type": "object",
                            "required": [
                              "target",
                              "minimum",
                              "maximum"
                            ],
                            "properties": {
                              "target": {
                                "type": "integer",
                                "example": 8,
                                "description": "Current scale the Elastigroup will conform to.\n"
                              },
                              "minimum": {
                                "type": "integer",
                                "example": 2,
                                "description": "The Elastigroup will not set a target below this value.\n"
                              },
                              "maximum": {
                                "type": "integer",
                                "example": 20,
                                "description": "The Elastigroup will not set a target greater than this value.\n"
                              },
                              "unit": {
                                "type": "string",
                                "example": "instance",
                                "description": "The base capacity unit.\n"
                              }
                            }
                          },
                          "scheduling": {
                            "title": "Scheduling Object",
                            "type": "object",
                            "properties": {
                              "tasks": {
                                "title": "Tasks Array",
                                "type": "array",
                                "items": {
                                  "title": "Task Object",
                                  "type": "object",
                                  "properties": {
                                    "isEnabled": {
                                      "type": "boolean",
                                      "example": true
                                    },
                                    "taskType": {
                                      "type": "string",
                                      "example": "setCapacity"
                                    },
                                    "cronExpression": {
                                      "type": "string",
                                      "example": "1 10 * * *"
                                    },
                                    "targetCapacity": {
                                      "type": "integer",
                                      "example": 2
                                    },
                                    "minCapacity": {
                                      "type": "integer",
                                      "example": 1
                                    },
                                    "maxCapacity": {
                                      "type": "integer",
                                      "example": 3
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "strategy": {
                            "type": "object",
                            "title": "Elastigroup Strategy",
                            "required": [
                              "preemptiblePercentage",
                              "onDemandCount",
                              "fallbackToOd"
                            ],
                            "properties": {
                              "fallbackToOd": {
                                "type": "boolean",
                                "example": true
                              },
                              "optimizationWindows": {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "format": "date-time",
                                  "example": [
                                    "Mon:01:00-Mon:02:00"
                                  ]
                                }
                              },
                              "provisioningModel": {
                                "type": "string",
                                "description": "Define the provisioning model of the launched instances\n",
                                "enum": [
                                  "SPOT",
                                  "PREEMPTIBLE"
                                ],
                                "default": "PREEMPTIBLE"
                              },
                              "revertToPreemptible": {
                                "required": [
                                  "performAt"
                                ],
                                "type": "object",
                                "properties": {
                                  "performAt": {
                                    "type": "string",
                                    "example": "timeWindow"
                                  }
                                }
                              },
                              "preemptiblePercentage": {
                                "type": "integer",
                                "example": 90,
                                "description": "percentage of Preemptible instances in the Elastigroup. The remaining percentage will be On-Demand instances.\n"
                              },
                              "onDemandCount": {
                                "type": "integer",
                                "example": 2,
                                "description": "the exact number of On-Demand instances required in the Elastigroup.\n"
                              },
                              "drainingTimeout": {
                                "example": 30,
                                "type": "integer",
                                "description": "The time in seconds, the instance is allowed to run while detached from the ELB.\n"
                              },
                              "shouldUtilizeCommitments": {
                                "type": "boolean",
                                "example": true,
                                "description": "Enable committed use discounts utilization.\n"
                              }
                            }
                          },
                          "compute": {
                            "type": "object",
                            "title": "Compute Object",
                            "required": [
                              "availabilityZones",
                              "subnets",
                              "launchSpecification"
                            ],
                            "properties": {
                              "launchSpecification": {
                                "type": "object",
                                "title": "Virtual Node Group Object",
                                "required": [
                                  "networkInterfaces",
                                  "disks"
                                ],
                                "properties": {
                                  "metadata": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string",
                                          "example": "environment"
                                        },
                                        "value": {
                                          "type": "string",
                                          "example": "production"
                                        }
                                      }
                                    }
                                  },
                                  "tags": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "prod1",
                                        "testingfeature"
                                      ]
                                    }
                                  },
                                  "backendServiceConfig": {
                                    "type": "object",
                                    "title": "backendServiceConfig Object",
                                    "properties": {
                                      "backendServices": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "required": [
                                            "backendServiceName"
                                          ],
                                          "properties": {
                                            "backendServiceName": {
                                              "type": "string",
                                              "example": "bserv-2"
                                            },
                                            "locationType": {
                                              "type": "string",
                                              "example": "global"
                                            },
                                            "scheme": {
                                              "type": "string",
                                              "example": null
                                            },
                                            "namedPorts": {
                                              "type": "object",
                                              "required": [
                                                "name",
                                                "ports"
                                              ],
                                              "properties": {
                                                "name": {
                                                  "type": "string",
                                                  "example": "https"
                                                },
                                                "ports": {
                                                  "type": "array",
                                                  "items": {
                                                    "type": "integer",
                                                    "example": [
                                                      443,
                                                      8443
                                                    ]
                                                  }
                                                }
                                              }
                                            },
                                            "backendBalancing": {
                                              "type": "object",
                                              "title": "Backend Balancing",
                                              "description": "Configure how traffic is distributed across instance groups.",
                                              "properties": {
                                                "backendBalancingMode": {
                                                  "type": "string",
                                                  "title": "Backend Balancing Mode",
                                                  "enum": [
                                                    "UTILIZATION",
                                                    "RATE"
                                                  ],
                                                  "example": "UTILIZATION"
                                                },
                                                "maxRatePerInstance": {
                                                  "type": "number",
                                                  "title": "Max Rate Per Instance",
                                                  "description": "If the backendBalancingMode is set to RATE, this field is required."
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "disks": {
                                    "type": "array",
                                    "title": "Disks array",
                                    "required": [
                                      "type",
                                      "diskSizeGb",
                                      "sourceImage"
                                    ],
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "deviceName": {
                                          "type": "string",
                                          "example": null
                                        },
                                        "initializeParams": {
                                          "type": "object",
                                          "properties": {
                                            "diskSizeGb": {
                                              "type": "integer",
                                              "example": 10
                                            },
                                            "diskType": {
                                              "title": "Disk Type",
                                              "description": "Specifies the disk type to use to create the instance. The default is null (GCP default value will be applied). Valid values: pd-ssd, pd-standard, pd-balanced, pd-extreme, hyperdisk-balanced, hyperdisk-balanced-high-availability.",
                                              "type": "string",
                                              "example": "pd-standard"
                                            },
                                            "sourceImage": {
                                              "type": "string",
                                              "example": "https://www.googleapis.com/compute/v1/projects/test/global/images/docker-image-1"
                                            }
                                          }
                                        },
                                        "mode": {
                                          "type": "string",
                                          "example": "READ_WRITE"
                                        },
                                        "source": {
                                          "type": "string",
                                          "example": null
                                        },
                                        "type": {
                                          "type": "string",
                                          "example": "PERSISTENT"
                                        },
                                        "autoDelete": {
                                          "type": "boolean",
                                          "example": true
                                        },
                                        "boot": {
                                          "type": "boolean",
                                          "example": true
                                        },
                                        "interface": {
                                          "type": "string",
                                          "example": "SCSI"
                                        }
                                      }
                                    }
                                  },
                                  "networkInterfaces": {
                                    "title": "Network Interfaces array",
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "network"
                                      ],
                                      "properties": {
                                        "network": {
                                          "type": "string",
                                          "example": "spot-network"
                                        },
                                        "projectId": {
                                          "type": "string",
                                          "example": "test-project"
                                        }
                                      }
                                    }
                                  },
                                  "shieldedInstanceConfig": {
                                    "type": "object",
                                    "title": "Shielded Instance Config",
                                    "description": "You can use secure boot when you launch VMs using Elastigroup. This helps you comply with your security policies. In the instance configuration, use ‘secureBootEnabled’ set to True to enforce UEFI with secure boot. Elastigroup provisions VMs with secure boot, as long as the images supports UEFI.",
                                    "properties": {
                                      "enableSecureBoot": {
                                        "type": "boolean",
                                        "default": false
                                      },
                                      "enableIntegrityMonitoring": {
                                        "type": "boolean",
                                        "default": false
                                      }
                                    }
                                  },
                                  "startupScript": {
                                    "type": "string",
                                    "example": "IyEvYmluL2Jhc2gNCnRvdWNoIHRlc3Qiquwhq38"
                                  },
                                  "shutdownScript": {
                                    "type": "string",
                                    "example": null
                                  },
                                  "ipForwarding": {
                                    "type": "boolean",
                                    "example": false
                                  },
                                  "minCpuPlatform": {
                                    "type": "string",
                                    "example": "Intel Sandy Bridge"
                                  },
                                  "instanceNamePrefix": {
                                    "pattern": "^[a-z]([-a-z0-9]*[a-z0-9])?",
                                    "type": "string",
                                    "example": "name-prefix",
                                    "description": "Set an instance name prefix to be used for all launched instances and their boot disk. \nThe prefix value should comply with the following limitations:\n* A recommended length of up to 30 characters.\n* A maximum length of 36 characters. Note: the GroupId suffix will be removed from the instance name once using over 30 characters.\n* The first character must be a lowercase letter, and all the following characters must be hyphens, lowercase letters, or digits, except the last character, which cannot be a hyphen.\n"
                                  }
                                }
                              },
                              "instanceTypes": {
                                "type": "object",
                                "title": "On Demand & Preemptible Types Object",
                                "required": [
                                  "ondemand",
                                  "preemptible"
                                ],
                                "properties": {
                                  "ondemand": {
                                    "type": "string",
                                    "example": "n1-standard-1",
                                    "description": "The type of On Demand instances to utilize\n"
                                  },
                                  "preemptible": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "n1-standard-1",
                                      "n1-standard-2"
                                    ],
                                    "description": "The type of Preemptible instances to utilize\n"
                                  },
                                  "custom": {
                                    "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/compute/properties/instanceTypes/properties/custom"
                                  },
                                  "preferred": {
                                    "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/compute/properties/instanceTypes/properties/preferred"
                                  }
                                }
                              },
                              "availabilityZones": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "asia-east1-a",
                                  "asia-east1-b",
                                  "asia-east1-c"
                                ],
                                "description": "Availability zones for the group"
                              },
                              "health": {
                                "type": "object",
                                "title": "Health",
                                "description": "Set health check and auto-healing of unhealthy VMs according to GCP Backend Services.\n",
                                "required": [
                                  "healthCheckType"
                                ],
                                "properties": {
                                  "healthCheckType": {
                                    "title": "Health Check Type",
                                    "description": "Health check types to use in order to validate instance health.\n",
                                    "type": "string",
                                    "enum": [
                                      "K8S_NODE",
                                      "BACKEND_SERVICE"
                                    ],
                                    "example": "K8S_NODE"
                                  },
                                  "autoHealing": {
                                    "title": "Auto Healing",
                                    "description": "Enable auto-healing of unhealthy instances.\n",
                                    "type": "boolean",
                                    "example": true
                                  },
                                  "gracePeriod": {
                                    "type": "string",
                                    "example": 300,
                                    "title": "Grace Period",
                                    "description": "The amount of time (in seconds) after a new instance has launched before terminating the old instance.\n"
                                  },
                                  "unhealthyDuration": {
                                    "type": "integer",
                                    "example": 250,
                                    "title": "Unhealthy Duration",
                                    "description": "Amount of time (in seconds) for the instance to remain unhealthy before a replacement is triggered.\n"
                                  }
                                }
                              },
                              "preferredAvailabilityZones": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "asia-east1-a",
                                  "asia-east1-c"
                                ],
                                "description": "prioritize availability zones when launching instances for the group <a style=color:red>Must be a sublist of compute.availabilityZones.</a>"
                              },
                              "gpu": {
                                "type": "object",
                                "title": "CPU Object",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "example": "nvidia-tesla-v100"
                                  },
                                  "count": {
                                    "type": "integer",
                                    "example": 1
                                  }
                                }
                              },
                              "subnets": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "region": {
                                      "type": "string",
                                      "example": "us-west1"
                                    },
                                    "subnetNames": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "example": [
                                        "private"
                                      ]
                                    }
                                  }
                                },
                                "description": "Subnets your group is associated with\n"
                              }
                            }
                          },
                          "scaling": {
                            "type": "object",
                            "title": "Scaling object",
                            "properties": {
                              "up": {
                                "type": "array",
                                "items": {
                                  "title": "Up scaling object",
                                  "type": "object",
                                  "properties": {
                                    "policyName": {
                                      "type": "string",
                                      "example": "scale_up_1"
                                    },
                                    "source": {
                                      "type": "string",
                                      "example": "stackdriver"
                                    },
                                    "metricName": {
                                      "type": "string",
                                      "example": "instance/disk/read_ops_count"
                                    },
                                    "statistic": {
                                      "type": "string",
                                      "example": "average"
                                    },
                                    "unit": {
                                      "type": "string",
                                      "example": "percent"
                                    },
                                    "threshold": {
                                      "type": "integer",
                                      "example": 10000
                                    },
                                    "namespace": {
                                      "type": "string",
                                      "example": "compute"
                                    },
                                    "period": {
                                      "type": "integer",
                                      "example": 300
                                    },
                                    "evaluationPeriods": {
                                      "type": "integer",
                                      "example": 1
                                    },
                                    "cooldown": {
                                      "type": "integer",
                                      "example": 300
                                    },
                                    "operator": {
                                      "type": "string",
                                      "example": "gte"
                                    },
                                    "dimensions": {
                                      "title": "Array of dimension objects",
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "name": {
                                            "type": "string",
                                            "example": "storage_type"
                                          },
                                          "value": {
                                            "type": "string",
                                            "example": "pd-standard"
                                          }
                                        }
                                      }
                                    },
                                    "action": {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "example": "adjustment"
                                        },
                                        "adjustment": {
                                          "type": "integer",
                                          "example": 1
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "down": {
                                "type": "array",
                                "items": {
                                  "title": "Down scaling object",
                                  "type": "object",
                                  "properties": {
                                    "policyName": {
                                      "type": "string",
                                      "example": "scale_down_1"
                                    },
                                    "source": {
                                      "type": "string",
                                      "example": "stackdriver"
                                    },
                                    "metricName": {
                                      "type": "string",
                                      "example": "instance/disk/read_ops_count"
                                    },
                                    "statistic": {
                                      "type": "string",
                                      "example": "average"
                                    },
                                    "unit": {
                                      "type": "string",
                                      "example": "percent"
                                    },
                                    "threshold": {
                                      "type": "integer",
                                      "example": 10000
                                    },
                                    "namespace": {
                                      "type": "string",
                                      "example": "compute"
                                    },
                                    "period": {
                                      "type": "integer",
                                      "example": 300
                                    },
                                    "evaluationPeriods": {
                                      "type": "integer",
                                      "example": 1
                                    },
                                    "cooldown": {
                                      "type": "integer",
                                      "example": 300
                                    },
                                    "operator": {
                                      "type": "string",
                                      "example": "lte"
                                    },
                                    "dimensions": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "name": {
                                            "type": "string",
                                            "example": "storage_type"
                                          },
                                          "value": {
                                            "type": "string",
                                            "example": "pd-standard"
                                          }
                                        }
                                      }
                                    },
                                    "action": {
                                      "type": "object",
                                      "properties": {
                                        "type": {
                                          "type": "string",
                                          "example": "adjustment"
                                        },
                                        "adjustment": {
                                          "type": "integer",
                                          "example": 1
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "thirdPartiesIntegration": {
                            "title": "Third Parties Integration Object",
                            "type": "object",
                            "properties": {
                              "dockerSwarm": {
                                "title": "DockerSwarm ThirdPartiesIntegration Object",
                                "type": "object",
                                "properties": {
                                  "masterHost": {
                                    "type": "string",
                                    "example": "swarm1.swarm.com"
                                  },
                                  "masterPort": {
                                    "type": "integer",
                                    "example": 1234
                                  }
                                }
                              },
                              "gke": {
                                "title": "GKE ThirdPartiesIntegration Object",
                                "type": "object",
                                "properties": {
                                  "autoUpdate": {
                                    "type": "boolean",
                                    "example": true
                                  },
                                  "autoScale": {
                                    "type": "object",
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "example": true
                                      },
                                      "isAutoConfig": {
                                        "type": "boolean",
                                        "example": false
                                      },
                                      "cooldown": {
                                        "type": "integer",
                                        "example": 300
                                      },
                                      "headroom": {
                                        "type": "object",
                                        "properties": {
                                          "cpuPerUnit": {
                                            "type": "integer",
                                            "example": 1
                                          },
                                          "memoryPerUnit": {
                                            "type": "integer",
                                            "example": 0
                                          },
                                          "numOfUnits": {
                                            "type": "integer",
                                            "example": 1
                                          }
                                        }
                                      },
                                      "down": {
                                        "type": "object",
                                        "properties": {
                                          "evaluationPeriods": {
                                            "type": "integer",
                                            "example": 5
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "clusterIdentifier": {
                                    "type": "string",
                                    "example": "gke-clust-1"
                                  },
                                  "location": {
                                    "type": "string",
                                    "example": "us-west1"
                                  }
                                }
                              }
                            }
                          },
                          "createdAt": {
                            "type": "string",
                            "example": "2020-10-16T09:03:23.000Z",
                            "format": "date-time",
                            "description": "The datetime the group was created.\n"
                          },
                          "updatedAt": {
                            "type": "string",
                            "example": "2020-10-16T09:03:23.000Z",
                            "format": "date-time",
                            "description": "The datetime the group was last updated.\n"
                          }
                        }
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "group": {
                        "type": "object",
                        "required": [
                          "name",
                          "strategy"
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/group/{groupId}": {
      "get": {
        "summary": "Get Elastigroup",
        "description": "List all properties for single GCP Elastigroup\n",
        "operationId": "elastigroupGcpDescribe",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "groupId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "sig-12345",
            "description": "Elastigroup ID\n"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Elastigroup",
        "description": "Delete an Elastigroup GCP\n",
        "operationId": "elastigroupGcpDelete",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Spot Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Elastigroup",
        "description": "Update an GCP Elastigroup\n",
        "operationId": "elastigroupGcpUpdate",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "GCP Elastigroup Update",
                    "required": [
                      "group"
                    ],
                    "properties": {
                      "group": {
                        "type": "object",
                        "title": "GCP Elastigroup",
                        "description": "Elastigroup Configuration",
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "spotinst-group",
                            "description": "GCP Elastigroup Name\n"
                          },
                          "description": {
                            "type": "string",
                            "example": "Some GCP Elastigroup description",
                            "description": "Description for your GCP Elastigroup\n"
                          },
                          "capacity": {
                            "title": "Capacity Units",
                            "description": "Update capacity settings",
                            "type": "object",
                            "properties": {
                              "target": {
                                "type": "integer",
                                "example": 8,
                                "description": "Current scale the Elastigroup will conform to.\n"
                              },
                              "minimum": {
                                "type": "integer",
                                "example": 2,
                                "description": "The Elastigroup will not set a target below this value.\n"
                              },
                              "maximum": {
                                "type": "integer",
                                "example": 20,
                                "description": "The Elastigroup will not set a target greater than this value.\n"
                              }
                            }
                          },
                          "scheduling": {
                            "title": "Scheduling Object",
                            "description": "Schedule tasks to execute, using CRON expressions.",
                            "type": "object",
                            "properties": {
                              "tasks": {
                                "title": "Tasks Array",
                                "description": "The scheduling tasks for the group.",
                                "type": "array",
                                "items": {
                                  "title": "Task Object",
                                  "type": "object",
                                  "required": [
                                    "taskType"
                                  ],
                                  "properties": {
                                    "isEnabled": {
                                      "title": "Is Enabled",
                                      "description": "Describes whether the task is enabled. When true the task should run when false it should not run.",
                                      "type": "boolean",
                                      "example": true
                                    },
                                    "taskType": {
                                      "title": "Is Enabled",
                                      "description": "The task type to run. / Valid Values: 'setCapacity'. Required on scheduling.tasks object.",
                                      "type": "string",
                                      "example": "setCapacity"
                                    },
                                    "cronExpression": {
                                      "title": "Cron Expression",
                                      "description": "A valid cron expression. For example : * * * * * .The cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script. Only one of ‘frequency’ or ‘cronExpression’ should be used at a time.",
                                      "type": "string",
                                      "example": "1 10 * * *"
                                    },
                                    "targetCapacity": {
                                      "title": "Target Capacity",
                                      "description": "The target capacity of the group",
                                      "type": "integer",
                                      "example": 2
                                    },
                                    "minCapacity": {
                                      "title": "Min Capacity",
                                      "description": "The min capacity of the group",
                                      "type": "integer",
                                      "example": 1
                                    },
                                    "maxCapacity": {
                                      "title": "Max Capacity",
                                      "description": "The max capacity of the group",
                                      "type": "integer",
                                      "example": 3
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "strategy": {
                            "type": "object",
                            "title": "Elastigroup Strategy",
                            "description": "Update strategy settings",
                            "properties": {
                              "fallbackToOd": {
                                "title": "Fallback To Od",
                                "description": "Activate Fallback to On-Demand. When provisioning an instance, if no Preemptible market is available, Fallback to On-Demand will provision an On-Demand instance to maintain the group capacity.",
                                "type": "boolean",
                                "example": true
                              },
                              "optimizationWindows": {
                                "type": "array",
                                "title": "Optimization Windows",
                                "description": "Set time window to perform the revert to preemptible. time windows must be at least 120 minutes. Format: DayInWeek:HH-DayInWeek:HH. Required when strategy.revertToPreemptible.performAt is 'timeWindow'",
                                "items": {
                                  "type": "string",
                                  "format": "date-time",
                                  "example": [
                                    "Mon:01:00-Mon:02:00"
                                  ]
                                }
                              },
                              "provisioningModel": {
                                "type": "string",
                                "description": "Define the provisioning model of the launched instances\n",
                                "enum": [
                                  "SPOT",
                                  "PREEMPTIBLE"
                                ]
                              },
                              "revertToPreemptible": {
                                "required": [
                                  "performAt"
                                ],
                                "type": "object",
                                "description": "Setting for revert to preemptible option",
                                "properties": {
                                  "performAt": {
                                    "title": "Perform At",
                                    "description": "Required on strategy.revertToPreemptible object",
                                    "enum": [
                                      "always",
                                      "never",
                                      "timeWindow"
                                    ],
                                    "type": "string",
                                    "example": "timeWindow"
                                  }
                                }
                              },
                              "preemptiblePercentage": {
                                "type": "integer",
                                "example": 90,
                                "description": "percentage of Preemptible instances in the Elastigroup. The remaining percentage will be On-Demand instances.\n"
                              },
                              "onDemandCount": {
                                "type": "integer",
                                "example": 2,
                                "description": "the exact number of On-Demand instances required in the Elastigroup.\n"
                              },
                              "drainingTimeout": {
                                "example": 30,
                                "type": "integer",
                                "description": "The time in seconds, the instance is allowed to run while detached from the ELB.\n"
                              },
                              "shouldUtilizeCommitments": {
                                "type": "boolean",
                                "example": true,
                                "description": "Enable committed use discounts utilization.\n"
                              }
                            }
                          },
                          "compute": {
                            "type": "object",
                            "title": "Compute Object",
                            "description": "Compute Configuration",
                            "properties": {
                              "health": {
                                "title": "Health",
                                "type": "object",
                                "description": "Set health check and auto-healing of unhealthy VMs according to GCP Backend Services.\n",
                                "required": [
                                  "healthCheckType"
                                ],
                                "properties": {
                                  "healthCheckType": {
                                    "title": "Health Check Type",
                                    "description": "Health check types to use in order to validate instance health.\n",
                                    "type": "string",
                                    "example": "K8S_NODE"
                                  },
                                  "autoHealing": {
                                    "title": "Auto Healing",
                                    "description": "Enable auto-healing of unhealthy instances.\n",
                                    "type": "boolean",
                                    "example": true
                                  },
                                  "gracePeriod": {
                                    "type": "string",
                                    "example": 300,
                                    "title": "Grace Period",
                                    "description": "The amount of time (in seconds) after a new instance has launched before terminating the old instance.\n"
                                  },
                                  "unhealthyDuration": {
                                    "type": "integer",
                                    "example": 250,
                                    "title": "Unhealthy Duration",
                                    "description": "Amount of time (in seconds) for the instance to remain unhealthy before a replacement is triggered.\n"
                                  }
                                }
                              },
                              "launchSpecification": {
                                "type": "object",
                                "title": "Virtual Node Group Object",
                                "description": "Update compute.launchSpecification settings",
                                "properties": {
                                  "metadata": {
                                    "title": "Metadata",
                                    "description": "An array of the following objects, representing Key-Value pair meta data for the created instances",
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "title": "Key",
                                          "description": "The meta data’s key",
                                          "type": "string",
                                          "example": "environment"
                                        },
                                        "value": {
                                          "title": "Value",
                                          "description": "The meta data’s value",
                                          "type": "string",
                                          "example": "production"
                                        }
                                      }
                                    }
                                  },
                                  "tags": {
                                    "title": "Tags",
                                    "description": "Tags to mark instances created.",
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "prod1",
                                        "testingfeature"
                                      ]
                                    }
                                  },
                                  "backendServiceConfig": {
                                    "type": "object",
                                    "title": "backendServiceConfig Object",
                                    "description": "Configure Backend Services.",
                                    "properties": {
                                      "backendServices": {
                                        "type": "array",
                                        "title": "Backend Services",
                                        "description": "Configure the Backend Service to connect the Elastigroup to",
                                        "items": {
                                          "type": "object",
                                          "required": [
                                            "backendServiceName"
                                          ],
                                          "properties": {
                                            "backendServiceName": {
                                              "title": "Backend Service Name",
                                              "description": "The name of the Backend Service. Required on compute.launchSpecification.backendServiceConfig.backendServices object",
                                              "type": "string",
                                              "example": "bserv-2"
                                            },
                                            "locationType": {
                                              "title": "Location Type",
                                              "description": "Which locations the backend service should be active. Possible values should be: 'regional' 'global'",
                                              "type": "string",
                                              "example": "global"
                                            },
                                            "scheme": {
                                              "title": "Scheme",
                                              "description": "In case the locationType is 'regional' we can set the traffic for the backend service, / between the instances in the vpc / traffic from the internet",
                                              "type": "string",
                                              "enum": [
                                                "INTERNAL",
                                                "EXTERNAL",
                                                "null"
                                              ],
                                              "example": null
                                            },
                                            "namedPorts": {
                                              "title": "Named Ports",
                                              "description": "Key-Value of port name and and port tuples.",
                                              "type": "object",
                                              "required": [
                                                "name",
                                                "ports"
                                              ],
                                              "properties": {
                                                "name": {
                                                  "title": "Name",
                                                  "description": "The name mapped to the port numbers that the Backend Service sends traffic through to the Elastigroup instances. The port name is mapped to one or more port numbers. Only one port name can selected per Backend Service. Required on compute.launchSpecification.backendServiceConfig.backendServices.namedPorts object",
                                                  "type": "string",
                                                  "example": "https"
                                                },
                                                "ports": {
                                                  "title": "Port",
                                                  "description": "The ports that the Backend Service sends traffic through to the Elastigroup instances. Required on compute.launchSpecification.backendServiceConfig.backendServices.namedPorts object",
                                                  "type": "array",
                                                  "items": {
                                                    "type": "integer",
                                                    "example": [
                                                      443,
                                                      8443
                                                    ]
                                                  }
                                                }
                                              }
                                            },
                                            "backendBalancing": {
                                              "type": "object",
                                              "title": "Backend Balancing",
                                              "description": "Configure how traffic is distributed across instance groups.",
                                              "properties": {
                                                "backendBalancingMode": {
                                                  "type": "string",
                                                  "title": "Backend Balancing Mode",
                                                  "enum": [
                                                    "UTILIZATION",
                                                    "RATE"
                                                  ],
                                                  "example": "UTILIZATION"
                                                },
                                                "maxRatePerInstance": {
                                                  "type": "number",
                                                  "title": "Max Rate Per Instance",
                                                  "description": "If the backendBalancingMode is set to RATE, this field is required."
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "disks": {
                                    "type": "array",
                                    "title": "Disks array",
                                    "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them",
                                    "required": [
                                      "sourceImage"
                                    ],
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "deviceName": {
                                          "title": "Device Name",
                                          "description": "Specifies a unique device name of your choice",
                                          "type": "string",
                                          "example": null
                                        },
                                        "initializeParams": {
                                          "title": "Initialize Params",
                                          "description": "Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance",
                                          "type": "object",
                                          "properties": {
                                            "diskSizeGb": {
                                              "title": "Disk Size Gb",
                                              "description": "Specifies the size of the disk in base-2 GB",
                                              "type": "integer",
                                              "example": 10
                                            },
                                            "diskType": {
                                              "title": "Disk Type",
                                              "description": "Specifies the disk type to use to create the instance. The default is null (GCP default value will be applied). Valid values: pd-ssd, pd-standard, pd-balanced, pd-extreme, hyperdisk-balanced, hyperdisk-balanced-high-availability.",
                                              "type": "string",
                                              "example": "pd-standard"
                                            },
                                            "sourceImage": {
                                              "title": "Source Image",
                                              "description": "A source image used to create the disk. You can provide a private (custom) image, and Compute Engine will use the corresponding image from your project. Required for compute.launchSpecification.disks.initializeParams object",
                                              "type": "string",
                                              "example": "https://www.googleapis.com/compute/v1/projects/test/global/images/docker-image-1"
                                            }
                                          }
                                        },
                                        "mode": {
                                          "title": "Mode",
                                          "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode",
                                          "type": "string",
                                          "example": "READ_WRITE"
                                        },
                                        "source": {
                                          "title": "Source",
                                          "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks.",
                                          "type": "string",
                                          "example": null
                                        },
                                        "type": {
                                          "title": "Type",
                                          "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT",
                                          "type": "string",
                                          "example": "PERSISTENT"
                                        },
                                        "autoDelete": {
                                          "title": "Auto Delete",
                                          "description": "Specifies whether the disk will be auto-deleted when the instance is deleted.",
                                          "type": "boolean",
                                          "example": true
                                        },
                                        "boot": {
                                          "title": "Boot",
                                          "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem",
                                          "type": "boolean",
                                          "example": true
                                        },
                                        "interface": {
                                          "title": "Interface",
                                          "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVM. The default is SCSI",
                                          "type": "string",
                                          "example": "SCSI"
                                        }
                                      }
                                    }
                                  },
                                  "networkInterfaces": {
                                    "title": "Network Interfaces array",
                                    "description": "An array of the following objects, representing network configuration for the created instances",
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "network"
                                      ],
                                      "properties": {
                                        "network": {
                                          "title": "Network",
                                          "description": "Network resource for this instance elastic for the created instances",
                                          "type": "string",
                                          "example": "spot-network"
                                        },
                                        "projectId": {
                                          "title": "Project ID",
                                          "description": "Use network resource from different project. set project ID to use it's network resource. This parameter relevant only If the network resource is in different project",
                                          "type": "string",
                                          "example": "test-project"
                                        }
                                      }
                                    }
                                  },
                                  "shieldedInstanceConfig": {
                                    "type": "object",
                                    "title": "Shielded Instance Config",
                                    "description": "You can use secure boot when you launch VMs using Elastigroup. This helps you comply with your security policies. In the instance configuration, use ‘secureBootEnabled’ set to True to enforce UEFI with secure boot. Elastigroup provisions VMs with secure boot, as long as the images supports UEFI.",
                                    "properties": {
                                      "enableSecureBoot": {
                                        "type": "boolean",
                                        "default": false
                                      },
                                      "enableIntegrityMonitoring": {
                                        "type": "boolean",
                                        "default": false
                                      }
                                    }
                                  },
                                  "startupScript": {
                                    "title": "Startup Script",
                                    "description": "Create and run your own startup scripts on your virtual machines to perform automated tasks every time your instance boots up.",
                                    "type": "string",
                                    "example": "IyEvYmluL2Jhc2gNCnRvdWNoIHRlc3Qiquwhq38"
                                  },
                                  "shutdownScript": {
                                    "title": "Shutdown Script",
                                    "description": "The Base64-encoded shutdown script to execute prior to instance termination. For more information please see: Shutdown Script",
                                    "type": "string",
                                    "example": null
                                  },
                                  "ipForwarding": {
                                    "title": "IP Forwarding",
                                    "description": "IP Forwarding Criteria",
                                    "type": "boolean",
                                    "example": false
                                  },
                                  "minCpuPlatform": {
                                    "title": "Min Cpu Platform",
                                    "description": "Set instance CPU platform",
                                    "type": "string",
                                    "example": "Intel Sandy Bridge"
                                  }
                                }
                              },
                              "instanceTypes": {
                                "type": "object",
                                "title": "On Demand & Preemptible Types Object",
                                "description": "Instance Types Configuration",
                                "required": [
                                  "ondemand",
                                  "preemptible"
                                ],
                                "properties": {
                                  "ondemand": {
                                    "type": "string",
                                    "example": "n1-standard-1",
                                    "description": "The type of On Demand instances to utilize\n"
                                  },
                                  "preemptible": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "n1-standard-1",
                                      "n1-standard-2"
                                    ],
                                    "description": "The type of Preemptible instances to utilize\n"
                                  },
                                  "custom": {
                                    "type": "object",
                                    "title": "Custom instance type",
                                    "description": "The custom types instances to utilize\n",
                                    "properties": {
                                      "vCPU": {
                                        "type": "integer",
                                        "example": "4"
                                      },
                                      "memoryGiB": {
                                        "type": "integer",
                                        "example": "3.75"
                                      }
                                    }
                                  },
                                  "preferred": {
                                    "type": "object",
                                    "title": "preferred Preemptible Types Object",
                                    "description": "prioritize instance types when launching instances for the group. <a style=color:red>Must be a sublist of the general instance types.</a>\n",
                                    "properties": {
                                      "preemptible": {
                                        "type": "array",
                                        "items": {
                                          "type": "string"
                                        },
                                        "example": [
                                          "n1-standard-1",
                                          "n1-standard-2"
                                        ],
                                        "description": "The type of Preemptible instances to utilize\n"
                                      },
                                      "custom": {
                                        "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/put/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/compute/properties/instanceTypes/properties/custom"
                                      }
                                    }
                                  }
                                }
                              },
                              "availabilityZones": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "asia-east1-a",
                                  "asia-east1-b",
                                  "asia-east1-c"
                                ],
                                "description": "Availability zones for the group"
                              },
                              "preferredAvailabilityZones": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "asia-east1-a",
                                  "asia-east1-c"
                                ],
                                "description": "prioritize availability zones when launching instances for the group <a style=color:red>Must be a sublist of compute.availabilityZones.</a>"
                              },
                              "gpu": {
                                "type": "object",
                                "title": "CPU Object",
                                "description": "Cpu Type",
                                "properties": {
                                  "type": {
                                    "type": "string",
                                    "example": "nvidia-tesla-v100"
                                  },
                                  "count": {
                                    "type": "integer",
                                    "example": 1
                                  }
                                }
                              },
                              "subnets": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "region": {
                                      "type": "string",
                                      "example": "us-west1"
                                    },
                                    "subnetNames": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "example": [
                                        "private"
                                      ]
                                    }
                                  }
                                },
                                "description": "Subnets your group is associated with\n"
                              }
                            }
                          },
                          "scaling": {
                            "type": "object",
                            "title": "Scaling object",
                            "description": "Update scaling settings",
                            "properties": {
                              "up": {
                                "title": "Up",
                                "description": "Update scaling up settings",
                                "type": "array",
                                "items": {
                                  "title": "Up scaling object",
                                  "type": "object",
                                  "required": [
                                    "metricName",
                                    "threshold",
                                    "namespace"
                                  ],
                                  "properties": {
                                    "policyName": {
                                      "title": "Policy Name",
                                      "description": "Scaling policy name",
                                      "type": "string",
                                      "example": "scale_up_1"
                                    },
                                    "source": {
                                      "title": "Source",
                                      "description": "The source of the metric. Valid values: spectrum, stackdriver",
                                      "type": "string",
                                      "example": "stackdriver"
                                    },
                                    "metricName": {
                                      "title": "Metric Name",
                                      "description": "The name of the metric. Default value is instance/cpu/utilization. Required on scaling.up object",
                                      "type": "string",
                                      "example": "instance/disk/read_ops_count"
                                    },
                                    "statistic": {
                                      "title": "Statistic",
                                      "description": "The metric aggregator to return. Valid values: average, sum, min, max",
                                      "type": "string",
                                      "example": "average"
                                    },
                                    "unit": {
                                      "title": "Unit",
                                      "description": "The unit for the alarm’s associated metric.",
                                      "enum": [
                                        "seconds",
                                        "microseconds",
                                        "milliseconds",
                                        "bytes",
                                        "kilobytes",
                                        "megabytes",
                                        "gigabytes",
                                        "terabytes",
                                        "bits",
                                        "kilobits",
                                        "megabits",
                                        "gigabits",
                                        "terabits",
                                        "percent",
                                        "count",
                                        "bytes/second",
                                        "kilobytes/second",
                                        "megabytes/second",
                                        "gigabytes/second",
                                        "terabytes/second",
                                        "bits/second",
                                        "kilobits/second",
                                        "megabits/second",
                                        "gigabits/second",
                                        "terabits/second",
                                        "count/second",
                                        "none"
                                      ],
                                      "type": "string",
                                      "example": "percent"
                                    },
                                    "threshold": {
                                      "title": "Threshold",
                                      "description": "The value against which the specified statistic is compared. Required on scaling.up object",
                                      "type": "integer",
                                      "example": 10000
                                    },
                                    "namespace": {
                                      "title": "Namespace",
                                      "description": "The namespace for the associated metric. Valid value: compute Required on scaling.up object",
                                      "type": "string",
                                      "example": "compute"
                                    },
                                    "period": {
                                      "title": "Period",
                                      "description": "The period in seconds over which the statistic is applied",
                                      "type": "integer",
                                      "example": 300
                                    },
                                    "evaluationPeriods": {
                                      "title": "Evaluation Periods",
                                      "description": "The number of periods over which data is compared to the specified threshold",
                                      "type": "integer",
                                      "default": 1,
                                      "example": 1
                                    },
                                    "cooldown": {
                                      "title": "Cooldown",
                                      "description": "The amount of time (in seconds) after a scaling activity completes before any further trigger-related scaling activities can start",
                                      "type": "integer",
                                      "default": 300,
                                      "example": 300
                                    },
                                    "operator": {
                                      "title": "Operator",
                                      "description": "The operator to use in order to determine if the scaling policy is applicable. / Valid Values: gte (greater than or equal to) lte (lower than or equal to)",
                                      "type": "string",
                                      "default": "gte",
                                      "example": "lte"
                                    },
                                    "dimensions": {
                                      "title": "Array of dimension objects",
                                      "description": "Set metrics for scaling.up policy",
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "required": [
                                          "name"
                                        ],
                                        "properties": {
                                          "name": {
                                            "title": "Name",
                                            "description": "The short labels names for filtering associated metric. For example, the metric instance/disk/read_ops_count is associated with the label compute.googleapis.com/storage_type, the short label name is storage_type",
                                            "type": "string",
                                            "example": "storage_type"
                                          },
                                          "value": {
                                            "title": "Value",
                                            "description": "Value of selected metric.can be Null",
                                            "type": "string",
                                            "example": "pd-standard"
                                          }
                                        }
                                      }
                                    },
                                    "action": {
                                      "type": "object",
                                      "title": "Action",
                                      "description": "The action to take when scale up is needed.",
                                      "required": [
                                        "type"
                                      ],
                                      "properties": {
                                        "type": {
                                          "title": "Type",
                                          "description": "The type of the action to take when scale up is needed. Valid value: adjustment. Required on scaling.up.action object",
                                          "type": "string",
                                          "example": "adjustment"
                                        },
                                        "adjustment": {
                                          "title": "Adjustment",
                                          "description": "The number associated with the specified adjustment type. Required if using adjustment as action type.",
                                          "type": "integer",
                                          "example": 1
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "down": {
                                "type": "array",
                                "title": "Down",
                                "description": "Update scaling down settings",
                                "items": {
                                  "title": "Down scaling object",
                                  "type": "object",
                                  "required": [
                                    "metricName",
                                    "threshold",
                                    "namespace"
                                  ],
                                  "properties": {
                                    "policyName": {
                                      "title": "Policy Name",
                                      "description": "The policy name",
                                      "type": "string",
                                      "example": "scale_down_1"
                                    },
                                    "source": {
                                      "title": "Source",
                                      "description": "The source of the metric. Valid values: spectrum, stackdriver",
                                      "type": "string",
                                      "example": "stackdriver"
                                    },
                                    "metricName": {
                                      "title": "Metric Name",
                                      "description": "The name of the metric. Default value is instance/cpu/utilization. Required on scaling.down object",
                                      "type": "string",
                                      "example": "instance/disk/read_ops_count"
                                    },
                                    "statistic": {
                                      "title": "Statistic",
                                      "description": "The metric aggregator to return. Valid values: average, sum, min, max",
                                      "type": "string",
                                      "example": "average"
                                    },
                                    "unit": {
                                      "title": "Unit",
                                      "description": "The unit for the alarm’s associated metric.",
                                      "enum": [
                                        "seconds",
                                        "microseconds",
                                        "milliseconds",
                                        "bytes",
                                        "kilobytes",
                                        "megabytes",
                                        "gigabytes",
                                        "terabytes",
                                        "bits",
                                        "kilobits",
                                        "megabits",
                                        "gigabits",
                                        "terabits",
                                        "percent",
                                        "count",
                                        "bytes/second",
                                        "kilobytes/second",
                                        "megabytes/second",
                                        "gigabytes/second",
                                        "terabytes/second",
                                        "bits/second",
                                        "kilobits/second",
                                        "megabits/second",
                                        "gigabits/second",
                                        "terabits/second",
                                        "count/second",
                                        "none"
                                      ],
                                      "type": "string",
                                      "example": "percent"
                                    },
                                    "threshold": {
                                      "title": "Threshold",
                                      "description": "The value against which the specified statistic is compared. Required on scaling.down object",
                                      "type": "integer",
                                      "example": 10000
                                    },
                                    "namespace": {
                                      "title": "Namespace",
                                      "description": "The namespace for the associated metric. Valid Value: compute Required on scaling.down object",
                                      "type": "string",
                                      "example": "compute"
                                    },
                                    "period": {
                                      "title": "Period",
                                      "description": "The period in seconds over which the statistic is applied",
                                      "type": "integer",
                                      "example": 300
                                    },
                                    "evaluationPeriods": {
                                      "title": "Evaluation Periods",
                                      "description": "The number of periods over which data is compared to the specified threshold.",
                                      "type": "integer",
                                      "default": 1,
                                      "example": 1
                                    },
                                    "cooldown": {
                                      "title": "Cooldown",
                                      "description": "The amount of time (in seconds) after a scaling activity completes before any further trigger-related scaling activities can start.",
                                      "type": "integer",
                                      "default": 300,
                                      "example": 300
                                    },
                                    "operator": {
                                      "title": "Operator",
                                      "description": "The operator to use in order to determine if the scaling policy is applicable. / Valid Values: gte (greater than or equal to) lte (lower than or equal to)",
                                      "type": "string",
                                      "default": "lte",
                                      "example": "gte"
                                    },
                                    "dimensions": {
                                      "title": "Dimensions",
                                      "description": "he short labels names for filtering associated metric. For example, the metric instance/disk/read_ops_count is associated with the label compute.googleapis.com/storage_type, the short label name is storage_type",
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "required": [
                                          "name"
                                        ],
                                        "properties": {
                                          "name": {
                                            "title": "Name",
                                            "description": "The short labels names for filtering associated metric. For example, the metric instance/disk/read_ops_count is associated with the label compute.googleapis.com/storage_type, the short label name is storage_type Required on scaling.down.dimensions object",
                                            "type": "string",
                                            "example": "storage_type"
                                          },
                                          "value": {
                                            "title": "Value",
                                            "description": "Value of selected metric.can be Null",
                                            "type": "string",
                                            "example": "pd-standard"
                                          }
                                        }
                                      }
                                    },
                                    "action": {
                                      "title": "Action",
                                      "description": "Update the action to take when scale up is needed",
                                      "type": "object",
                                      "required": [
                                        "type"
                                      ],
                                      "properties": {
                                        "type": {
                                          "title": "Type",
                                          "description": "The type of the action to take when scale up is needed. Valid value: adjustment Required on scaling.down.action object",
                                          "type": "string",
                                          "example": "adjustment"
                                        },
                                        "adjustment": {
                                          "title": "Adjustment",
                                          "description": "The number associated with the specified adjustment type. Required if using adjustment as action type",
                                          "type": "integer",
                                          "example": 1
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "thirdPartiesIntegration": {
                            "title": "Third Parties Integration Object",
                            "description": "Third Parties Integration Configuration",
                            "type": "object",
                            "properties": {
                              "dockerSwarm": {
                                "title": "DockerSwarm ThirdPartiesIntegration Object",
                                "description": "Properties to connect docker swarm.",
                                "type": "object",
                                "properties": {
                                  "masterHost": {
                                    "title": "Master Host",
                                    "description": "Docker swarm master hostname",
                                    "type": "string",
                                    "example": "swarm1.swarm.com"
                                  },
                                  "masterPort": {
                                    "title": "Master Port",
                                    "description": "Docker swarm master port",
                                    "type": "integer",
                                    "example": 1234
                                  }
                                }
                              },
                              "gke": {
                                "title": "GKE ThirdPartiesIntegration Object",
                                "description": "Properties for GKE integration",
                                "type": "object",
                                "properties": {
                                  "autoUpdate": {
                                    "title": "Auto Update",
                                    "description": "If set to True - we check every 30 minutes if the gke version of the original node pool of the elastigroup was imported from - changed. if so - we re import the new configurations",
                                    "type": "boolean",
                                    "example": true
                                  },
                                  "autoScale": {
                                    "title": "Auto Scale",
                                    "description": "Properties for GKE integration auto scaling",
                                    "type": "object",
                                    "properties": {
                                      "isEnabled": {
                                        "title": "Is Enabled",
                                        "description": "Flag to enable / disable the auto scaling",
                                        "type": "boolean",
                                        "example": true,
                                        "default": false
                                      },
                                      "isAutoConfig": {
                                        "title": "Is Auto Config",
                                        "description": "Flag to enable / disable the headroom configuration",
                                        "type": "boolean",
                                        "example": false
                                      },
                                      "cooldown": {
                                        "title": "Cooldown",
                                        "description": "Set cooldown (in minutes)",
                                        "type": "integer",
                                        "example": 300
                                      },
                                      "headroom": {
                                        "title": "Headroom",
                                        "description": "Set headroom configuration",
                                        "type": "object",
                                        "properties": {
                                          "cpuPerUnit": {
                                            "title": "CPU Per Unit",
                                            "description": "Optionally configure the number of CPUs to allocate the headroom.",
                                            "type": "integer",
                                            "example": 1
                                          },
                                          "memoryPerUnit": {
                                            "title": "Memory Per Unit",
                                            "description": "Optionally configure the number of memory (MiB) to allocate the headroom.",
                                            "type": "integer",
                                            "example": 0
                                          },
                                          "numOfUnits": {
                                            "title": "Number Of Units",
                                            "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.",
                                            "type": "integer",
                                            "example": 1
                                          }
                                        }
                                      },
                                      "down": {
                                        "title": "Down",
                                        "description": "Set scale down properties",
                                        "type": "object",
                                        "properties": {
                                          "evaluationPeriods": {
                                            "title": "Evaluation Periods",
                                            "description": "Set number of evaluation periods for scale down. minimum value is: 3",
                                            "type": "integer",
                                            "example": 5
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "clusterIdentifier": {
                                    "title": "ClusterIdentifier",
                                    "description": "Cluster ID",
                                    "type": "string",
                                    "example": "gke-clust-1"
                                  },
                                  "location": {
                                    "title": "Location",
                                    "description": "Instance Location",
                                    "type": "string",
                                    "example": "us-west1"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "group": {
                        "type": "object"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/group/{groupId}/status": {
      "get": {
        "summary": "Get Elastigroup Status",
        "description": "Get the status for all instances that are memebers of the Elastigroup",
        "operationId": "elastigroupGcpGetStatus",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "title": "Group Status Object",
                                "type": "object",
                                "properties": {
                                  "privateIpAddress": {
                                    "type": "string"
                                  },
                                  "machineType": {
                                    "type": "string"
                                  },
                                  "zone": {
                                    "type": "string"
                                  },
                                  "instanceName": {
                                    "type": "string"
                                  },
                                  "lifeCycle": {
                                    "type": "string"
                                  },
                                  "provisioningModel": {
                                    "type": "string"
                                  },
                                  "statusName": {
                                    "type": "string"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "format": "date-time"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "format": "date-time"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:gcp:gce:group:status"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/group/{groupId}/events": {
      "get": {
        "summary": "List Activity Events",
        "description": "Get all activity events for the Elastigroup",
        "operationId": "elastigroupGcpGetActivityEvents",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          },
          {
            "in": "query",
            "name": "fromDate",
            "example": "2019-05-17",
            "required": true,
            "description": "Get items on or after this date (ISO 8601)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "in": "query",
            "name": "toDate",
            "example": "2019-05-25",
            "required": true,
            "description": "Get items on or before this date (ISO 8601)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "title": "Activity Event Object",
                                "type": "object",
                                "properties": {
                                  "groudId": {
                                    "type": "string",
                                    "example": "sig-576g654"
                                  },
                                  "eventType": {
                                    "type": "string",
                                    "example": "RollFinished"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "format": "date-time",
                                    "example": "2018-03-01T09:58:16.000+0000"
                                  },
                                  "subEvents": {
                                    "type": "array",
                                    "items": {
                                      "title": "Activity Sub-Event Object",
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string",
                                          "example": "sbgd-1234567"
                                        },
                                        "groupId": {
                                          "type": "string",
                                          "example": "sig-576g654"
                                        },
                                        "currentBatch": {
                                          "type": "integer",
                                          "example": 1
                                        },
                                        "numOfBatches": {
                                          "type": "integer",
                                          "example": 1
                                        },
                                        "gracePeriod": {
                                          "type": "integer",
                                          "example": 300
                                        },
                                        "type": {
                                          "type": "string",
                                          "example": "rollInfo"
                                        },
                                        "status": {
                                          "type": "string",
                                          "example": null
                                        },
                                        "createdAt": {
                                          "type": "string",
                                          "format": "date-time",
                                          "example": "2018-03-01T09:58:16.000+0000"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:gcp:gce:group:event"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/group/{groupId}/log": {
      "get": {
        "summary": "Get Elastilog",
        "description": "Fetch a group's Elastilog",
        "operationId": "elastigroupGcpFetchGroupElastilog",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/2"
          },
          {
            "in": "query",
            "name": "limit",
            "description": "Maximum number of items to return.",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 1000,
              "default": 500,
              "example": 200
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "title": "Elastilog Object",
                                "type": "object",
                                "properties": {
                                  "message": {
                                    "type": "string",
                                    "example": "Group sig-e0a2bd7c successfully created."
                                  },
                                  "severity": {
                                    "type": "string",
                                    "enum": [
                                      "ALL",
                                      "INFO",
                                      "DEBUG",
                                      "WARN"
                                    ],
                                    "example": "INFO"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2019-05-19T14:34:15.000Z"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:gcp:gce:group:log"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/group/{groupId}/scale/up": {
      "put": {
        "summary": "Scale Up",
        "description": "Add instances to the Elastigroup",
        "operationId": "elastigroupGcpScaleUp",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "adjustment",
            "description": "The number of instances to add to the group",
            "schema": {
              "type": "integer",
              "example": 1
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Preemptible object",
                                "properties": {
                                  "newPreemptibles": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "instanceName": {
                                          "type": "string",
                                          "example": "sin-9da52709"
                                        }
                                      }
                                    }
                                  },
                                  "newInstances": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "instanceName": {
                                          "type": "string",
                                          "example": "sin-1591c0b6"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:gcp:gce:preemptible"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/group/{groupId}/scale/down": {
      "put": {
        "summary": "Scale Down",
        "description": "Remove instances from the Elastigroup",
        "operationId": "elastigroupGcpScaleDown",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "query",
            "name": "adjustment",
            "description": "The number of instances to remove from the group",
            "schema": {
              "type": "integer",
              "example": 1
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Scale object",
                                "properties": {
                                  "victimPreemptibles": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "title": "Victim Preemptible Object",
                                      "properties": {
                                        "instanceName": {
                                          "type": "string",
                                          "example": "sin-4ecd5037"
                                        },
                                        "zone": {
                                          "type": "string",
                                          "example": "asia-east1-b"
                                        },
                                        "machineType": {
                                          "type": "string",
                                          "example": "N1_STANDARD_2"
                                        }
                                      }
                                    }
                                  },
                                  "victimInstances": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "title": "Victim Instance Object",
                                      "properties": {
                                        "instanceName": {
                                          "type": "string",
                                          "example": "sin-31e0596a"
                                        },
                                        "zone": {
                                          "type": "string",
                                          "example": "europe-west1-c"
                                        },
                                        "machineType": {
                                          "type": "string",
                                          "example": "N1_STANDARD_1"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:gcp:gce:scale"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/costs": {
      "get": {
        "summary": "Get Costs Per Account",
        "description": "Retrieve costs up to one year back per specified account over a specified time period.",
        "operationId": "gcpCostsPerAccount",
        "tags": [
          "Insights Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-12345678",
            "description": "The Spot account ID for which the cost information should be returned.\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "fromDate",
            "example": "2016-01-10T00:00:00.000Z",
            "description": "* The start date of the requested time period. \n* Date values following either a date format (YYYY-MM-DDTHH:mm:ss.SSSZ) or Unix milliseconds timestamp (1668078050004).\n* <a style=color:red>The value cannot be earlier than 1 year back.</a>\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "toDate",
            "example": "2016-01-10T01:00:00.000Z",
            "description": "* The end date of the requested time period. \n* Date values following either a date format (YYYY-MM-DDTHH:mm:ss.SSSZ) or Unix milliseconds timestamp (1668078050004).\n* <a style=color:red>The maximum of time period length is 90 days.</a>\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Costs Per Account Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "67582d0c-108b-4ef7-9fdc-d39678a30844"
                            },
                            "url": {
                              "type": "string",
                              "example": "/gcp/gce/costs"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2016-01-10T01:00:00.000Z"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:gcp:costs"
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "spotinst:gcp:costs",
                                "properties": {
                                  "preemptible": {
                                    "type": "object",
                                    "properties": {
                                      "runningHours": {
                                        "description": "The sum of preemptible running hours.",
                                        "type": "number",
                                        "format": "number",
                                        "example": 1470.8
                                      },
                                      "actualCosts": {
                                        "description": "The actual cost of the preemptible instances.",
                                        "type": "number",
                                        "format": "number",
                                        "example": 107.3
                                      },
                                      "potentialCosts": {
                                        "description": "The OD cost of the running preemptible instances.",
                                        "type": "number",
                                        "format": "number",
                                        "example": 378.41
                                      },
                                      "savingsPercentage": {
                                        "description": "The total savings percentage.",
                                        "type": "number",
                                        "format": "number",
                                        "example": 71.64
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/group/{groupId}/costs": {
      "get": {
        "summary": "Get Elastigroup Costs",
        "description": "Get financial information on a specific Elastigroup\n",
        "operationId": "elastigroupGcpCosts",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/2"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Group Cost Object",
                                "properties": {
                                  "running": {
                                    "type": "object",
                                    "properties": {
                                      "value": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 294.3
                                      },
                                      "unit": {
                                        "type": "string",
                                        "example": "hours"
                                      }
                                    }
                                  },
                                  "savings": {
                                    "type": "object",
                                    "properties": {
                                      "value": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 60.5263
                                      },
                                      "unit": {
                                        "type": "string",
                                        "example": "percentage"
                                      }
                                    }
                                  },
                                  "costs": {
                                    "type": "object",
                                    "properties": {
                                      "actual": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 8.829
                                      },
                                      "potential": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 22.3668
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:gcp:gce:group:costs"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/group/{groupId}/roll": {
      "get": {
        "summary": "List Deployments",
        "description": "Get all of the deployments for a specific Elastigroup, and their status\n",
        "operationId": "elastigroupGcpListDeployments",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "allOf": [
                                  {
                                    "type": "object",
                                    "title": "Group Roll Object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "example": "sbgd-01f01234"
                                      },
                                      "status": {
                                        "type": "string",
                                        "example": "STARTING"
                                      },
                                      "currentBatch": {
                                        "type": "integer",
                                        "example": 1
                                      },
                                      "numOfBatches": {
                                        "type": "integer",
                                        "example": 2
                                      },
                                      "progress": {
                                        "type": "object",
                                        "properties": {
                                          "unit": {
                                            "type": "string",
                                            "example": "percentage"
                                          },
                                          "value": {
                                            "type": "integer",
                                            "example": 0
                                          }
                                        }
                                      }
                                    }
                                  },
                                  {
                                    "$ref": "#/paths/~1aws~1emr~1mrScaler/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/allOf/1"
                                  }
                                ]
                              }
                            },
                            "kind": {
                              "example": "spotinst:gcp:gce:group:roll"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Start Deployment",
        "description": "Deploy the Elastigroup: Triggers a Blue/Green deployment that replaces the existing instances in the Elastigroup\n",
        "operationId": "elastigroupGcpDeploy",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Group Deploy Object",
                    "required": [
                      "batchSizePercentage",
                      "gracePeriod"
                    ],
                    "properties": {
                      "batchSizePercentage": {
                        "type": "integer",
                        "example": 20,
                        "description": "(in percentage) the batch size of the deployment, i.e.: how many instances to replace in each batch\n"
                      },
                      "gracePeriod": {
                        "type": "integer",
                        "example": 300,
                        "description": "(in seconds) the time until an instance becomes healthy in the load balancer\n"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "allOf": [
                                  {
                                    "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D~1roll/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/allOf/0"
                                  }
                                ]
                              }
                            },
                            "kind": {
                              "example": "spotinst:gcp:gce:group:roll"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/group/{groupId}/roll/{rollId}": {
      "get": {
        "summary": "Get Deployment",
        "description": "Get a specific deployment's status\n",
        "operationId": "elastigroupGcpDeployStatus",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "path",
            "name": "rollId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The deployment ID to query\n"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D~1roll/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Stop Deployment",
        "description": "Stop an existing deployment\n",
        "operationId": "elastigroupGcpStopDeployment",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D~1roll~1%7BrollId%7D/get/parameters/2"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "roll": {
                    "type": "object",
                    "properties": {
                      "status": {
                        "type": "string",
                        "example": "STOPPED",
                        "description": "in this case, always set to \"STOPPED\""
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D~1roll/put/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/group/{groupId}/deatchInstances": {
      "put": {
        "summary": "Detach Instances",
        "description": "Detach instances from an Elastigroup\n",
        "operationId": "elastigroupGcpDetachInstances",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Detach Instances Object",
                    "properties": {
                      "instancesToDetach": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "The names of the instances to detach from the group.",
                        "example": [
                          "sin-44c02836",
                          "sin-ddf71dfa"
                        ]
                      },
                      "shouldTerminateInstances": {
                        "type": "boolean",
                        "description": "Indicates whether to terminate the instances or not."
                      },
                      "shouldDecrementTargetCapacity": {
                        "type": "boolean",
                        "description": "Indicates whether to decrement the capacity of the group, so no new instance will be launched instead of the detached one.\n"
                      },
                      "drainingTimeout": {
                        "type": "integer",
                        "description": "(Applies only if shouldTerminateInstances is on) The draining timeout (in seconds) before terminating the instance. If no draining timeout is defined, the group's draining timeout applies.\n"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "example": "spotinst:gcp:gce:detachInstances"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/instance/{instanceId}": {
      "get": {
        "summary": "Get Instance Status",
        "description": "Get the current instance status. Possible status values: `ACTIVE`, `TERMINATING`\n",
        "operationId": "elastigroupGcpGetInstanceStatus",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "instanceId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "GCP Instance ID\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Instance Status Object",
                                "properties": {
                                  "instanceName": {
                                    "type": "string",
                                    "example": "sin-123"
                                  },
                                  "lifeCycleState": {
                                    "type": "string",
                                    "enum": [
                                      "ACTIVE",
                                      "TERMINATING"
                                    ],
                                    "example": "ACTIVE"
                                  },
                                  "privateIp": {
                                    "type": "string",
                                    "example": "10.0.0.1"
                                  },
                                  "groupId": {
                                    "type": "string",
                                    "example": "sig-123"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:gcp:gce:instance"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/instance/{instanceId}/lock": {
      "post": {
        "summary": "Lock Instance",
        "description": "Set termination protection for a specific instance.\n",
        "operationId": "elastigroupGcpLockInstance",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1instance~1%7BinstanceId%7D/get/parameters/1"
          },
          {
            "in": "query",
            "name": "ttlInMinutes",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Specify a TTL (in minutes) for this lock, i.e.: for how long the protection will be valid for.\n"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/gce/instance/{instanceId}/unlock": {
      "post": {
        "summary": "Unlock Instance",
        "description": "Remove termination protection for a specific instance.\n",
        "operationId": "elastigroupGcpUnlockInstance",
        "tags": [
          "Elastigroup GCP"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1instance~1%7BinstanceId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster": {
      "get": {
        "summary": "List Clusters",
        "description": "Get the configurations for all Ocean clusters in the specified account.\n",
        "operationId": "OceanECSClusterList",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean ECS Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/put/requestBody/content/application~1json/schema/allOf/0"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:ecs"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "summary": "Create Cluster",
        "description": "Create a new Ocean ECS cluster in the specified account.\n",
        "operationId": "OceanECSClusterCreate",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "cluster"
                    ],
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "title": "ECS Ocean",
                        "required": [
                          "name",
                          "clusterName",
                          "region"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "o-12345abc",
                            "readOnly": true,
                            "description": "Ocean cluster identifier.\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "Ocean::my-elastigroup-name",
                            "description": "Add a name for the Ocean cluster.\n"
                          },
                          "clusterName": {
                            "type": "string",
                            "example": "my-ECS-cluster-name",
                            "description": "ECS cluster name.\n"
                          },
                          "autoScaler": {
                            "type": "object",
                            "title": "Ocean Autoscaler",
                            "description": "The Ocean ECS Autoscaler.\n",
                            "properties": {
                              "isEnabled": {
                                "type": "boolean",
                                "description": "Enable the Ocean ECS Autoscaler.\n",
                                "example": true
                              },
                              "cooldown": {
                                "type": "integer",
                                "description": "Cooldown period between scaling actions. Value should be cooldown period in seconds, greater than 180.\n",
                                "example": 300
                              },
                              "resourceLimits": {
                                "type": "object",
                                "description": "Optionally set upper and lower bounds on the resource usage of the cluster.\n",
                                "properties": {
                                  "maxMemoryGib": {
                                    "type": "integer",
                                    "description": "The maximum memory in GiB units that can be allocated to the cluster. Minimum value: 1.\n",
                                    "example": 1
                                  },
                                  "maxVCpu": {
                                    "type": "integer",
                                    "description": "The maximum CPU in vCPU units that can be allocated to the cluster. Minimum value: 1.\n",
                                    "example": 1
                                  }
                                }
                              },
                              "down": {
                                "type": "object",
                                "description": "Autoscaling scale down operations.\n",
                                "properties": {
                                  "evaluationPeriods": {
                                    "type": "integer",
                                    "example": 4
                                  },
                                  "maxScaleDownPercentage": {
                                    "type": "integer",
                                    "description": "The maximum portion (as a %) of nodes that will be scaled down at once out of the total number of potential nodes to scale down.\nExample: If there are 10 nodes to scale down and the parameter is 50%, then only 5 nodes will be scaled down at once.\nThe other 5 nodes will be scaled down in the next autoscaling iteration.\n",
                                    "example": 20
                                  }
                                }
                              },
                              "headroom": {
                                "type": "object",
                                "description": "Spare resource capacity management enabling fast assignment of pods without waiting for new resources to launch.\n",
                                "properties": {
                                  "cpuPerUnit": {
                                    "type": "integer",
                                    "description": "Optionally configure the number of CPUs to allocate per headroom unit. CPUs are denoted in CPU units, where 1024 units = 1 vCPU.\n",
                                    "example": 2048
                                  },
                                  "memoryPerUnit": {
                                    "type": "integer",
                                    "description": "Optionally configure the amount of memory (MiB) to allocate per headroom unit.\n",
                                    "example": 3
                                  },
                                  "numOfUnits": {
                                    "type": "integer",
                                    "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                    "example": 2
                                  }
                                }
                              },
                              "isAutoConfig": {
                                "type": "boolean",
                                "description": "Use automatic headroom. When set to true, the values under cluster.autoScaler.headroom are not effective, as Ocean configures and optimizes headroom automatically. The auto headroom is calculated based on the service with the most changed task in the cluster, not taking the Virtual Node Group's settings into consideration.\n",
                                "example": false
                              },
                              "autoHeadroomPercentage": {
                                "type": "integer",
                                "description": "Optionally set the auto-headroom percentage. Set a number between 0-200 to control the headroom % of the cluster. Relevant when isAutoConfig=true.\n",
                                "example": 20
                              },
                              "shouldScaleDownNonServiceTasks": {
                                "type": "boolean",
                                "description": "Option to scale down non-service tasks. If not set, Ocean does not scale down standalone tasks.\n",
                                "default": false,
                                "example": true
                              },
                              "enableAutomaticAndManualHeadroom": {
                                "type": "boolean",
                                "description": "When set to true, both automatic and per custom Virtual Node Group manual headroom to be saved concurrently and independently in the cluster. prerequisite: isAutoConfig must be true\n",
                                "example": false
                              }
                            }
                          },
                          "region": {
                            "type": "string",
                            "example": "us-east-1",
                            "description": "Select the region for the Ocean cluster to run in.\n"
                          },
                          "capacity": {
                            "type": "object",
                            "title": "Capacity Units",
                            "description": "Capacity specifications for the Ocean cluster.\n",
                            "properties": {
                              "minimum": {
                                "type": "integer",
                                "example": 1,
                                "description": "The bottom limit of instances that the cluster can scale down to.\n"
                              },
                              "maximum": {
                                "type": "integer",
                                "example": 10,
                                "description": "The upper limit of instances that the cluster can scale up to.\n",
                                "default": 1000
                              },
                              "target": {
                                "type": "integer",
                                "example": 5,
                                "description": "Number of instances to launch and maintain in cluster.h\n"
                              }
                            }
                          },
                          "strategy": {
                            "type": "object",
                            "title": "Ocean Strategy",
                            "description": "Strategy Configuration of the Ocean cluster.\n",
                            "properties": {
                              "utilizeReservedInstances": {
                                "type": "boolean",
                                "description": "If reserved instances exist, Ocean will use them before launching spot instances.\n",
                                "example": true,
                                "default": false
                              },
                              "fallbackToOd": {
                                "type": "boolean",
                                "description": "If no spot instance markets are available, enable Ocean to launch on-demand instances instead.\n",
                                "example": true,
                                "default": true
                              },
                              "spotPercentage": {
                                "type": "integer",
                                "example": 100
                              },
                              "drainingTimeout": {
                                "type": "integer",
                                "description": "The draining timeout (in seconds) before terminating the instance. If no draining timeout is defined, the default draining timeout will be used.\n",
                                "example": 200
                              },
                              "utilizeCommitments": {
                                "type": "boolean",
                                "description": "If savings plans commitment has available capacity, Ocean will utilize them alongside RIs (if exist) to maximize cost efficiency.\n",
                                "example": false,
                                "default": false
                              },
                              "clusterOrientation": {
                                "type": "object",
                                "properties": {
                                  "availabilityVsCost": {
                                    "type": "string",
                                    "description": "You can control the approach that Ocean takes while launching nodes by configuring this value.\n",
                                    "enum": [
                                      "costOriented",
                                      "balanced",
                                      "cheapest"
                                    ],
                                    "example": "balanced",
                                    "default": "balanced"
                                  }
                                }
                              }
                            }
                          },
                          "compute": {
                            "type": "object",
                            "title": "Ocean Compute",
                            "required": [
                              "subnetIds",
                              "launchSpecification"
                            ],
                            "properties": {
                              "subnetIds": {
                                "type": "array",
                                "description": "A comma-separated list of subnet identifiers for the Ocean cluster. Subnet identifiers should be configured with auto-assign public IP.\n",
                                "items": {
                                  "type": "string",
                                  "example": "subnet-1234abcd"
                                }
                              },
                              "instanceTypes": {
                                "type": "object",
                                "description": "The type of instances that may or may not be a part of the Ocean cluster.",
                                "properties": {
                                  "filters": {
                                    "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1instanceTypeFiltersSimulation/post/requestBody/content/application~1json/schema/allOf/0/properties/filters"
                                  },
                                  "whitelist": {
                                    "type": "array",
                                    "description": "Instance types allowed in the Ocean cluster. Cannot be configured if a deny list is configured.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "c4.xlarge",
                                      "c4.2xlarge",
                                      "c4.4xlarge",
                                      "c4.8xlarge"
                                    ]
                                  },
                                  "blacklist": {
                                    "type": "array",
                                    "description": "Instance types to avoid launching in the Ocean cluster. Cannot be configured if a permit list is configured.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "r5.large",
                                      "r5.xlarge"
                                    ]
                                  }
                                }
                              },
                              "launchSpecification": {
                                "type": "object",
                                "description": "The default specification for container instances in the cluster. Used as a template for custom Virtual Node Groups to inherit values which are not explicitly defined in them, and as a default VNG when no other VNGs exist or match the workload’s requirements.\n",
                                "required": [
                                  "imageId",
                                  "securityGroupIds"
                                ],
                                "properties": {
                                  "associatePublicIpAddress": {
                                    "type": "boolean",
                                    "description": "Configure public IP address allocation.",
                                    "default": false,
                                    "example": false
                                  },
                                  "associateIpv6Address": {
                                    "type": "boolean",
                                    "description": "Configure IPv6 address allocation.",
                                    "default": false,
                                    "example": false
                                  },
                                  "imageId": {
                                    "type": "string",
                                    "example": "ami-123456789abcdefgh"
                                  },
                                  "securityGroupIds": {
                                    "type": "array",
                                    "description": "One or more security group identifiers.\n",
                                    "items": {
                                      "type": "string",
                                      "example": "sg-abcdefgh123456789"
                                    }
                                  },
                                  "iamInstanceProfile": {
                                    "type": "object",
                                    "description": "The instance profile iamRole.\n",
                                    "properties": {
                                      "arn": {
                                        "type": "string",
                                        "description": "The iamRole ARN.\n",
                                        "example": "my-arn"
                                      }
                                    }
                                  },
                                  "blockDeviceMappings": {
                                    "type": "array",
                                    "description": "Block devices that are exposed to the instance. You can specify virtual devices and EBS volumes.\\\nThis parameter and rootVolumeSize cannot be in the specification at the same time.\\\nThis parameter can be null. If not null, it must contain at least one block device.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "deviceName": {
                                          "type": "string",
                                          "description": "Set device name.\n",
                                          "example": "/dev/xvda"
                                        },
                                        "ebs": {
                                          "type": "object",
                                          "description": "Set EBS properties.\n",
                                          "properties": {
                                            "throughput": {
                                              "type": "integer",
                                              "minimum": 125,
                                              "maximum": 1000,
                                              "example": 125,
                                              "description": "The amount of data transferred to or from a storage device per second. You can use this parameter only if volumetype=‘gp3’.\n"
                                            },
                                            "deleteOnTermination": {
                                              "type": "boolean",
                                              "description": "Flag to delete the EBS on instance termination.\n",
                                              "example": false
                                            },
                                            "encrypted": {
                                              "type": "boolean",
                                              "example": false
                                            },
                                            "iops": {
                                              "type": "integer",
                                              "description": "Must be greater than or equal to 0.\n",
                                              "example": 1
                                            },
                                            "kmsKeyId": {
                                              "type": "string",
                                              "example": "alias/aws/ebs"
                                            },
                                            "snapshotId": {
                                              "type": "string",
                                              "example": "snap-abcdefghi111110"
                                            },
                                            "volumeType": {
                                              "type": "string",
                                              "description": "Set volume type.\n",
                                              "example": "gp2"
                                            },
                                            "volumeSize": {
                                              "type": "integer",
                                              "description": "Set volume size (in GB). When using this property, you cannot use dynamicVolumeSize. You must use one of the other. Volume size should be greater than or equal to the size configured in the AMI.\n"
                                            },
                                            "dynamicVolumeSize": {
                                              "type": "object",
                                              "required": [
                                                "baseSize",
                                                "resource",
                                                "sizePerResourceUnit"
                                              ],
                                              "description": "Set dynamic volume size properties. When using this object, you cannot use volumeSize. You must use one or the other.\n",
                                              "properties": {
                                                "baseSize": {
                                                  "type": "integer",
                                                  "description": "Initial size per volume.\n",
                                                  "example": 50
                                                },
                                                "resource": {
                                                  "type": "string",
                                                  "example": "CPU"
                                                },
                                                "sizePerResourceUnit": {
                                                  "type": "integer",
                                                  "description": "Additional size per resource unit (in GB). For example, if baseSize=50, and sizePerResourceUnit=20, and an instance with 2 CPU is launched, its disk size will be 90 GB.\n",
                                                  "example": 20
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "instanceMetadataOptions": {
                                    "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BEcsClusterName%7D~1import/post/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/properties/cluster/properties/compute/properties/launchSpecification/properties/instanceMetadataOptions"
                                  },
                                  "userData": {
                                    "type": "string",
                                    "format": "byte",
                                    "description": "The base 64 encoded MIME user data to make available to the instances.",
                                    "example": "Q29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSI9PT09PT09PT09PT09PT01MTg5MDY1Mzc3MjIyODk4NDA3PT0iCk1JTUUtVmVyc2lvbjogMS4wCgotLT09PT09PT09PT09PT09PTUxODkwNjUzNzcyMjI4OTg0MDc9PQp"
                                  },
                                  "useAsTemplateOnly": {
                                    "type": "boolean",
                                    "description": "The configuration specified on the Ocean object will function only as a template for virtual node groups.\n",
                                    "default": false
                                  },
                                  "monitoring": {
                                    "type": "boolean",
                                    "description": "Enable detailed monitoring for cluster.",
                                    "example": false
                                  },
                                  "ebsOptimized": {
                                    "type": "boolean",
                                    "description": "Enable EBS optimization for the cluster. A flag will enable optimized capacity for high bandwidth connectivity to the EB service for non EBS optimized instance types. For instances that are EBS optimized, this flag will be ignored.",
                                    "example": false
                                  },
                                  "tags": {
                                    "type": "array",
                                    "description": "List of kay-value pairs of tags.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "tagKey": {
                                          "type": "string",
                                          "description": "Set the tag key.\n",
                                          "example": "Creator"
                                        },
                                        "tagValue": {
                                          "type": "string",
                                          "description": "Set the tag value.\n",
                                          "example": "John Doe"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "optimizeImages": {
                                "type": "object",
                                "required": [
                                  "shouldOptimizeEcsAmi"
                                ],
                                "properties": {
                                  "shouldOptimizeEcsAmi": {
                                    "type": "boolean",
                                    "example": "true"
                                  },
                                  "performAt": {
                                    "type": "string",
                                    "example": "never",
                                    "description": "Must be one of the following values: never, always, timeWindow. If performAt = timeWindow, the time window array should contain at least one time window.\n"
                                  },
                                  "timeWindows": {
                                    "type": "array",
                                    "description": "Restrict to time window regex.\n",
                                    "items": {
                                      "example": "['Sun:02:00-Sun:12:00', 'Wed:01:01-Fri:02:03']"
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "scheduling": {
                            "type": "object",
                            "title": "Ocean Scheduling",
                            "description": "An object used to define times for a task such as a shutdown to be activated.\n",
                            "properties": {
                              "tasks": {
                                "type": "array",
                                "description": "The actions in the cluster to be scheduled.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "isEnabled",
                                    "cronExpression",
                                    "taskType"
                                  ],
                                  "properties": {
                                    "isEnabled": {
                                      "type": "boolean",
                                      "description": "Describes whether the task is enabled. When true, the task will run. When false, it does not run. Required for the object cluster.scheduling.tasks.\n",
                                      "example": false
                                    },
                                    "cronExpression": {
                                      "type": "string",
                                      "description": "A valid cron expression, for example \" * * * * * \". The cron runs in the UTC time zone and is in Unix cron format [Cron Expression Validator Script](https://www.unix.com/man-page/linux/5/crontab/). Only one of ‘frequency' or ‘cronExpression' should be used at a time. Required for cluster.scheduling.tasks.\n"
                                    },
                                    "taskType": {
                                      "type": "string",
                                      "description": "Valid values: \"clusterRoll\". Required for cluster.scheduling.tasks.\n",
                                      "enum": [
                                        "clusterRoll"
                                      ],
                                      "example": "clusterRoll"
                                    },
                                    "parameters": {
                                      "type": "object",
                                      "properties": {
                                        "clusterRoll": {
                                          "type": "object",
                                          "properties": {
                                            "batchSizePercentage": {
                                              "type": "integer",
                                              "minimum": 0,
                                              "maximum": 100,
                                              "example": 20,
                                              "description": "Value as a percent to set the size of a batch in a roll. Valid values are 0-100.\n"
                                            },
                                            "comment": {
                                              "type": "string",
                                              "example": "This is why I deployed my cluster.",
                                              "description": "Add a comment description for the roll. The comment is limited to 256 chars\n"
                                            },
                                            "batchMinHealthyPercentage": {
                                              "type": "integer",
                                              "minimum": 1,
                                              "maximum": 100,
                                              "default": 50,
                                              "example": 100,
                                              "description": "Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "shutdownHours": {
                                "type": "object",
                                "title": "Shutdown Hours",
                                "required": [
                                  "timeWindows"
                                ],
                                "properties": {
                                  "timeWindows": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "example": "Sat:08:00-Sun:08:00"
                                    }
                                  },
                                  "isEnabled": {
                                    "type": "boolean",
                                    "example": true,
                                    "description": "Flag to enable / disable the shutdown hours mechanism. When turned to false, the mechanism is deactivated and the cluster remains in its current state.\n"
                                  }
                                }
                              }
                            }
                          },
                          "logging": {
                            "type": "object",
                            "title": "Logging configuration",
                            "properties": {
                              "export": {
                                "type": "object",
                                "title": "Logging Export Configuration.",
                                "properties": {
                                  "s3": {
                                    "type": "object",
                                    "title": "Logging S3 Export configuration.",
                                    "description": "Exports your cluster's logs to the S3 bucket and subdir configured on the S3 [data integration](/#operation/DataIntegrationCreate) given.\nEach file contains logs of 3 minutes where each log is separated by a new line and saved as a JSON.\nThe file formats are `subdir`/`accountId`_`oceanId`_`oceanName`_`startTime`.log\nIf no subdir was configured, the files will be saved in the root of the bucket.\n",
                                    "required": [
                                      "id"
                                    ],
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "description": "The identifier of The S3 data integration to export the logs to.",
                                        "example": "di-123"
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2019-06-03T08:13:08.000Z",
                            "description": "A timestamp of the Ocean creation.\n"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2019-06-10T15:06:13.000Z",
                            "description": "A timestamp of the latest Ocean update.\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{oceanClusterId}": {
      "get": {
        "summary": "Get Cluster",
        "description": "Get the configurations for a specified Ocean cluster.\n",
        "operationId": "OceanECSClusterGet",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "oceanClusterId",
            "example": "o-12345abc",
            "description": "Identifier of the Ocean cluster.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Cluster",
        "description": "All Ocean parameters are updatable, excluding Region and ID. This API supports partial updates, so specific fields can be updated separately.\n",
        "operationId": "OceanECSClusterUpdate",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/2"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "cluster"
                    ],
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "title": "ECS Ocean",
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "o-12345abc",
                            "readOnly": true,
                            "description": "Ocean cluster identifier.\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "Ocean::my-elastigroup-name",
                            "description": "Add a name for the Ocean cluster.\n"
                          },
                          "clusterName": {
                            "type": "string",
                            "example": "my-ECS-cluster-name",
                            "description": "ECS cluster name.\n"
                          },
                          "autoScaler": {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/autoScaler"
                          },
                          "capacity": {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/capacity"
                          },
                          "strategy": {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/strategy"
                          },
                          "compute": {
                            "type": "object",
                            "title": "Ocean Compute",
                            "properties": {
                              "subnetIds": {
                                "type": "array",
                                "description": "A comma-separated list of subnet identifiers for the Ocean cluster. Subnet identifiers should be configured with auto-assign public IP.\n",
                                "items": {
                                  "type": "string",
                                  "example": "subnet-1234abcd"
                                }
                              },
                              "instanceTypes": {
                                "type": "object",
                                "description": "The type of instances that may or may not be a part of the Ocean cluster.",
                                "properties": {
                                  "filters": {
                                    "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1instanceTypeFiltersSimulation/post/requestBody/content/application~1json/schema/allOf/0/properties/filters"
                                  },
                                  "whitelist": {
                                    "type": "array",
                                    "description": "Instance types allowed in the Ocean cluster. Cannot be configured if a deny list is configured.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "c4.xlarge",
                                      "c4.2xlarge",
                                      "c4.4xlarge",
                                      "c4.8xlarge"
                                    ]
                                  },
                                  "blacklist": {
                                    "type": "array",
                                    "description": "Instance types to avoid launching in the Ocean cluster. Cannot be configured if a permit list is configured.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "r5.large",
                                      "r5.xlarge"
                                    ]
                                  }
                                }
                              },
                              "launchSpecification": {
                                "type": "object",
                                "description": "The default specification for container instances in the cluster. Used as a template for custom Virtual Node Groups to inherit values which are not explicitly defined in them, and as a default VNG when no other VNGs exist or match the workload’s requirements.\n",
                                "properties": {
                                  "associatePublicIpAddress": {
                                    "type": "boolean",
                                    "description": "Configure public IP address allocation.",
                                    "default": false,
                                    "example": false
                                  },
                                  "associateIpv6Address": {
                                    "type": "boolean",
                                    "description": "Configure IPv6 address allocation.",
                                    "default": false,
                                    "example": false
                                  },
                                  "imageId": {
                                    "type": "string",
                                    "example": "ami-123456789abcdefgh"
                                  },
                                  "securityGroupIds": {
                                    "type": "array",
                                    "description": "One or more security group identifiers.\n",
                                    "items": {
                                      "type": "string",
                                      "example": "sg-abcdefgh123456789"
                                    }
                                  },
                                  "iamInstanceProfile": {
                                    "type": "object",
                                    "description": "The instance profile iamRole.\n",
                                    "properties": {
                                      "arn": {
                                        "type": "string",
                                        "description": "The iamRole ARN.\n",
                                        "example": "my-arn"
                                      }
                                    }
                                  },
                                  "blockDeviceMappings": {
                                    "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/compute/properties/launchSpecification/properties/blockDeviceMappings"
                                  },
                                  "instanceMetadataOptions": {
                                    "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BEcsClusterName%7D~1import/post/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/properties/cluster/properties/compute/properties/launchSpecification/properties/instanceMetadataOptions"
                                  },
                                  "userData": {
                                    "type": "string",
                                    "format": "byte",
                                    "description": "The base 64 encoded MIME user data to make available to the instances.",
                                    "example": "Q29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSI9PT09PT09PT09PT09PT01MTg5MDY1Mzc3MjIyODk4NDA3PT0iCk1JTUUtVmVyc2lvbjogMS4wCgotLT09PT09PT09PT09PT09PTUxODkwNjUzNzcyMjI4OTg0MDc9PQp"
                                  },
                                  "useAsTemplateOnly": {
                                    "type": "boolean",
                                    "description": "The configuration specified on the Ocean object will function only as a template for virtual node groups.\n",
                                    "default": false
                                  },
                                  "monitoring": {
                                    "type": "boolean",
                                    "description": "Enable detailed monitoring for cluster.",
                                    "example": false
                                  },
                                  "ebsOptimized": {
                                    "type": "boolean",
                                    "description": "Enable EBS optimization for the cluster. A flag will enable optimized capacity for high bandwidth connectivity to the EB service for non EBS optimized instance types. For instances that are EBS optimized, this flag will be ignored.",
                                    "example": false
                                  },
                                  "tags": {
                                    "type": "array",
                                    "description": "List of kay-value pairs of tags.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "tagKey": {
                                          "type": "string",
                                          "description": "Set the tag key.\n",
                                          "example": "Creator"
                                        },
                                        "tagValue": {
                                          "type": "string",
                                          "description": "Set the tag value.\n",
                                          "example": "John Doe"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "optimizeImages": {
                                "type": "object",
                                "properties": {
                                  "shouldOptimizeEcsAmi": {
                                    "type": "boolean",
                                    "example": "true"
                                  },
                                  "performAt": {
                                    "type": "string",
                                    "example": "never",
                                    "description": "Must be one of the following values: never, always, timeWindow. If performAt = timeWindow, the time window array should contain at least one time window.\n"
                                  },
                                  "timeWindows": {
                                    "type": "array",
                                    "description": "Restrict to time window regex.\n",
                                    "items": {
                                      "example": "['Sun:02:00-Sun:12:00', 'Wed:01:01-Fri:02:03']"
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "scheduling": {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/scheduling"
                          },
                          "logging": {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/logging"
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2019-06-03T08:13:08.000Z",
                            "description": "A timestamp of the Ocean creation.\n"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2019-06-10T15:06:13.000Z",
                            "description": "A timestamp of the latest Ocean update.\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Cluster",
        "description": "Delete a specified Ocean cluster.\n",
        "operationId": "OceanECSClusterDelete",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{EcsClusterName}/import": {
      "post": {
        "summary": "Import Cluster",
        "description": "Create Ocean cluster object from an existing ECS cluster with at least one container instance to be used as input for create cluster.<br> Import the configuration from the latest instance id launched with in the cluster (out of the first batch of 100 instances ECS returns).<br> **This route will not register the ECS cluster to Ocean.**\n",
        "operationId": "OceanECSClusterImport",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "EcsClusterName",
            "example": "ecsName",
            "description": "ECS Cluster name\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "region"
                    ],
                    "properties": {
                      "region": {
                        "type": "string",
                        "example": "us-east-1",
                        "description": "The region that the ECS cluster is running at.\n"
                      },
                      "name": {
                        "type": "string",
                        "example": "oceanName",
                        "description": "The name for the new Ocean cluster object. <br> If the name is not provided, the default will be *Ocean_{EcsClusterName}*\n"
                      },
                      "instanceId": {
                        "type": "string",
                        "example": "i-123456789abcdefgh",
                        "description": "Indicate the container instance id that the configuration will be taken from. This is an optional field\n"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Import Ocean ECS Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/ecs/cluster/my-ECS-cluster-name/import"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "required": [
                                  "cluster"
                                ],
                                "properties": {
                                  "cluster": {
                                    "type": "object",
                                    "title": "ECS Ocean",
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "example": "my-Ocean-ECS-cluster",
                                        "description": "The name of the Ocean cluster provided in the request. If not provided in the import request, the name will be Ocean_{EcsClusterName}.\n"
                                      },
                                      "clusterName": {
                                        "type": "string",
                                        "example": "my-ECS-cluster-name",
                                        "description": "ECS cluster name.\n"
                                      },
                                      "region": {
                                        "type": "string",
                                        "example": "us-east-1",
                                        "description": "The region for the Ocean cluster to run in. The same name as the provided ECS cluster.\n"
                                      },
                                      "compute": {
                                        "type": "object",
                                        "title": "Ocean Compute",
                                        "properties": {
                                          "subnetIds": {
                                            "type": "array",
                                            "description": "A comma-separated list of subnet identifiers for the Ocean cluster. Subnet identifiers should be configured with auto-assign public IP.\n",
                                            "items": {
                                              "type": "string",
                                              "example": "subnet-1234abcd"
                                            }
                                          },
                                          "launchSpecification": {
                                            "type": "object",
                                            "description": "The default specification for container instances in the cluster. Used as a template for custom Virtual Node Groups to inherit values which are not explicitly defined in them, and as a default VNG when no other VNGs exist or match the workload’s requirements.\n",
                                            "properties": {
                                              "imageId": {
                                                "type": "string",
                                                "example": "ami-123456789abcdefgh"
                                              },
                                              "securityGroupIds": {
                                                "type": "array",
                                                "description": "One or more security group identifiers.\n",
                                                "items": {
                                                  "type": "string",
                                                  "example": "sg-abcdefgh123456789"
                                                }
                                              },
                                              "keyPair": {
                                                "type": "string",
                                                "example": "dev-keypair"
                                              },
                                              "userData": {
                                                "type": "string",
                                                "example": "userData"
                                              },
                                              "iamInstanceProfile": {
                                                "type": "object",
                                                "description": "The instance profile iamRole.\n",
                                                "properties": {
                                                  "arn": {
                                                    "type": "string",
                                                    "description": "The iamRole arn.\n",
                                                    "example": "my-arn"
                                                  }
                                                }
                                              },
                                              "tags": {
                                                "type": "object",
                                                "description": "AWS tags from an EC2 instance registered as a container instance.\n",
                                                "properties": {
                                                  "tagKey": {
                                                    "type": "string",
                                                    "example": "env"
                                                  },
                                                  "tagValue": {
                                                    "type": "string",
                                                    "example": "dev"
                                                  }
                                                }
                                              },
                                              "instanceMetadataOptions": {
                                                "type": "object",
                                                "title": "instanceMetadataOptions",
                                                "required": [
                                                  "httpTokens"
                                                ],
                                                "description": "Ocean instance metadata options object for [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html).\n",
                                                "properties": {
                                                  "httpTokens": {
                                                    "type": "string",
                                                    "description": "Determines if a signed token is required or not.\n",
                                                    "enum": [
                                                      "optional",
                                                      "required"
                                                    ],
                                                    "example": "optional"
                                                  },
                                                  "httpPutResponseHopLimit": {
                                                    "type": "integer",
                                                    "description": "An integer from 1 through 64.\nThe required HTTP PUT response hop limit for instance metadata requests.\nThe larger the number, the further the instance metadata requests can travel.\n",
                                                    "example": 12
                                                  },
                                                  "httpEndpoint": {
                                                    "type": "string",
                                                    "description": "Enables or disables the HTTP metadata endpoint on your instances.\n",
                                                    "enum": [
                                                      "disabled",
                                                      "enabled"
                                                    ],
                                                    "example": "disabled"
                                                  },
                                                  "instanceMetadataTags": {
                                                    "title": "Instance Metadata Tags",
                                                    "type": "string",
                                                    "enum": [
                                                      "Enabled",
                                                      "Disabled"
                                                    ],
                                                    "description": "Indicates whether access to instance tags from the instance metadata is enabled or disabled.\nCan’t be null.\n",
                                                    "example": "Enabled"
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:ecs"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{oceanClusterId}/log": {
      "summary": "Ocean for AWS ECS",
      "get": {
        "summary": "Fetch Elastilog",
        "description": "Get the log of an Ocean Cluster.\n",
        "operationId": "oceanEcsFetchLog",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1mcs~1ecs~1cluster~1%7BclusterName%7D~1costs/get/parameters/2"
          },
          {
            "$ref": "#/paths/~1mcs~1ecs~1cluster~1%7BclusterName%7D~1costs/get/parameters/1"
          },
          {
            "in": "query",
            "name": "limit",
            "description": "Maximum number of lines to extract in a response.\n",
            "schema": {
              "type": "integer",
              "maximum": 1000,
              "default": 500
            },
            "required": false,
            "example": 200
          },
          {
            "in": "query",
            "name": "severity",
            "description": "Severity of log entries to extract.\n",
            "schema": {
              "type": "string",
              "enum": [
                "ALL",
                "INFO",
                "DEBUG",
                "ERROR",
                "WARN"
              ],
              "default": "ALL"
            },
            "required": false,
            "example": "INFO"
          },
          {
            "in": "query",
            "name": "resourceId",
            "example": "i-12345678",
            "description": "Filter extracted log entries for a specific resource identifier. Default: Null\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Get Log Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "request": {
                      "type": "object",
                      "description": "Original request properties.\n",
                      "properties": {
                        "id": {
                          "type": "string",
                          "example": "3213f42e-455e-4801-a185-cd3eb65fac5f",
                          "description": "Unique identifier associated with this request.\n"
                        },
                        "url": {
                          "type": "string",
                          "example": "/ocean/aws/ecs/cluster/o-e0a2bd7c/log?fromDate=2020-10-06&toDate=2020-10-08&severity=ALL&limit=500",
                          "description": "The URL that was used for the request.\n"
                        },
                        "method": {
                          "type": "string",
                          "example": "GET",
                          "description": "The HTTP **METHOD** used for the request.\n"
                        },
                        "timestamp": {
                          "type": "string",
                          "example": "2020-10-05T16:20:38.579Z",
                          "description": "When the request was received by Spot.\n"
                        }
                      }
                    },
                    "response": {
                      "type": "object",
                      "description": "Response package that includes status, type, and any relevant data.\n",
                      "properties": {
                        "status": {
                          "type": "object",
                          "properties": {
                            "code": {
                              "type": "integer",
                              "example": "200",
                              "description": "HTTP status code assigned to this response.\n"
                            },
                            "message": {
                              "type": "string",
                              "example": "OK",
                              "description": "HTTP status message for the respective status code.\n"
                            }
                          }
                        },
                        "kind": {
                          "type": "string",
                          "example": "spotinst:ocean:cluster:log"
                        },
                        "items": {
                          "type": "array",
                          "description": "Array of data objects.\n",
                          "items": {
                            "type": "object",
                            "properties": {
                              "message": {
                                "type": "string"
                              },
                              "severity": {
                                "type": "string"
                              },
                              "createdAt": {
                                "type": "string"
                              }
                            }
                          },
                          "example": [
                            {
                              "message": "Instances Terminated - ECS Autoscaler ,Terminated 1, List of instances: [i-0914721d46ebbabb2]",
                              "severity": "INFO",
                              "createdAt": "2020-10-07T09:51:12.000Z"
                            },
                            {
                              "message": "Instances: [i-0914721d46ebbabb2] have been detached. Reason: Auto scale",
                              "severity": "INFO",
                              "createdAt": "2020-10-07T09:51:11.000Z"
                            }
                          ]
                        },
                        "count": {
                          "type": "integer",
                          "example": "2"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{oceanClusterId}/instanceTypeFiltersSimulation": {
      "post": {
        "summary": "Instance Types Filters Simulation",
        "description": "Returns all instances types that match the given filters. These instance types will be used if the cluster is configured with these filters.\n",
        "operationId": "oceanEcsInstanceTypeFiltersSimulation",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "filters"
                    ],
                    "properties": {
                      "filters": {
                        "type": "object",
                        "description": "List of filters. The Instance types that match with all filters compose the Ocean's whitelist parameter.  Cannot be configured together with whitelist/blacklist.\n",
                        "title": "InstanceTypesFilters",
                        "properties": {
                          "minVcpu": {
                            "type": "integer",
                            "description": "Minimum number of vCPUs available.\n",
                            "minimum": 0,
                            "example": 2
                          },
                          "maxVcpu": {
                            "type": "integer",
                            "description": "Maximum number of vCPUs available.\n",
                            "minimum": 1,
                            "example": 16
                          },
                          "minMemoryGiB": {
                            "type": "number",
                            "format": "double",
                            "description": "Minimum amount of Memory (GiB).\n",
                            "minimum": 0,
                            "example": 8
                          },
                          "maxMemoryGiB": {
                            "type": "number",
                            "format": "double",
                            "description": "Maximum amount of Memory (GiB).\n",
                            "minimum": 0,
                            "example": 16
                          },
                          "minGpu": {
                            "type": "integer",
                            "description": "Minimum total number of GPUs.\n",
                            "minimum": 0,
                            "example": 0
                          },
                          "maxGpu": {
                            "type": "integer",
                            "description": "Maximum total number of GPUs.\n",
                            "minimum": 1,
                            "example": 4
                          },
                          "includeFamilies": {
                            "type": "array",
                            "description": "Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported). For example, C* will include instance types from these families: c5, c4, c4a, etc.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "c5*",
                              "g5"
                            ]
                          },
                          "excludeFamilies": {
                            "type": "array",
                            "description": "Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported). For example, C* will exclude instance types from these families: c5, c4, c4a, etc.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "t2",
                              "R4*"
                            ]
                          },
                          "excludeMetal": {
                            "type": "boolean",
                            "default": false,
                            "description": "In case excludeMetal is set to true, metal types will not be available for scaling.\n",
                            "example": true
                          },
                          "isEnaSupported": {
                            "type": "boolean",
                            "description": "Ena is supported or not.\n",
                            "example": true
                          },
                          "architectures": {
                            "type": "array",
                            "description": "The filtered instance types will support at least one of the architectures from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "i386",
                                "x86_64",
                                "arm64"
                              ]
                            },
                            "example": [
                              "i386",
                              "x86_64"
                            ]
                          },
                          "virtualizationTypes": {
                            "type": "array",
                            "description": "The filtered instance types will support at least one of the virtualization types from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "hvm",
                                "paravirtual"
                              ]
                            },
                            "example": [
                              "hvm"
                            ]
                          },
                          "categories": {
                            "type": "array",
                            "description": "The filtered instance types will belong to one of the categories types from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "Accelerated_computing",
                                "Compute_optimized",
                                "General_purpose",
                                "Memory_optimized",
                                "Storage_optimized"
                              ]
                            },
                            "example": [
                              "Accelerated_computing",
                              "Compute_optimized"
                            ]
                          },
                          "minEnis": {
                            "type": "integer",
                            "description": "Minimum number of network interfaces (ENIs).\n",
                            "minimum": 0,
                            "example": 2
                          },
                          "diskTypes": {
                            "type": "array",
                            "description": "The filtered instance types will have one of the disk type from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "NVMe",
                                "EBS",
                                "SSD",
                                "HDD"
                              ]
                            },
                            "example": [
                              "NVMe",
                              "EBS"
                            ]
                          },
                          "hypervisor": {
                            "type": "array",
                            "description": "The filtered instance types will have a hypervisor type from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "nitro",
                                "xen"
                              ]
                            },
                            "example": [
                              "nitro"
                            ]
                          },
                          "rootDeviceTypes": {
                            "type": "array",
                            "description": "The filtered instance types will have a root device types from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "ebs",
                                "instance-store"
                              ]
                            },
                            "example": [
                              "ebs"
                            ]
                          },
                          "minNetworkPerformance": {
                            "type": "integer",
                            "description": "Minimum Bandwidth in Gib/s of network performance.\n",
                            "minimum": 0,
                            "example": 2
                          },
                          "maxNetworkPerformance": {
                            "type": "integer",
                            "description": "Maximum Bandwidth in Gib/s of network performance.\n",
                            "minimum": 1,
                            "example": 20
                          },
                          "minInstancePrice": {
                            "type": "number",
                            "format": "double",
                            "description": "Minimum Price of On-Demand instance type.\n",
                            "minimum": 0,
                            "example": 2
                          },
                          "maxInstancePrice": {
                            "type": "number",
                            "format": "double",
                            "description": "Maximum Price of On-Demand instance type.\n",
                            "exclusiveMinimum": true,
                            "minimum": 0,
                            "example": 20
                          },
                          "includeGenerations": {
                            "type": "array",
                            "description": "Types belonging to a Generation from the IncludeGenerations will be available for scaling.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "6",
                              "7"
                            ]
                          },
                          "excludeGenerations": {
                            "type": "array",
                            "description": "Types Not belonging to a Generation from the ExcludeGenerations will be available for scaling.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "1",
                              "2"
                            ]
                          },
                          "encryptionInTransitSupported": {
                            "type": "boolean",
                            "description": "encryptionInTransitSupported is supported or not.\n",
                            "example": true
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Instance Types Filters Simulation Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/ecs/cluster/o-abcd1234/instanceTypeFiltersSimulation"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "filteredInstanceTypes": {
                                    "type": "array",
                                    "description": "The simulated instance types.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "g5.xlarge",
                                      "c5.2xlarge",
                                      "c5ad.2xlarge",
                                      "c5d.2xlarge",
                                      "c5a.2xlarge"
                                    ]
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:ecs:instanceTypesFilters:simulation"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{oceanClusterId}/allowedInstanceTypes": {
      "get": {
        "summary": "Allowed Instance Types",
        "description": "Return the list of the allowed Ocean cluster instance types.\n",
        "operationId": "oceanEcsGetAllowedInstanceTypes",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Allowed Instance Types Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/ecs/cluster/0-12345abc/allowedInstanceTypes"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "instanceTypes": {
                                    "type": "array",
                                    "description": "The allowed Ocean cluster instance types.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "c3.large",
                                      "c5.large"
                                    ]
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:ecs:allowedInstanceTypes"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/import": {
      "post": {
        "summary": "Upgrade Elastigroup to Ocean",
        "description": "Upgrade an Elastigroup with ECS integration into Ocean for ECS cluster.\n",
        "operationId": "oceanEcsUpgradeFromEG",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "groupId",
            "example": "sig-1234abcd",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The identifier of the Elastigroup to upgrade.\n"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{oceanClusterId}/roll": {
      "post": {
        "summary": "Initiate Roll",
        "description": "Roll an entire Ocean cluster or roll subsets of the cluster by specifying launchSpecIds or instanceIds. Performing this request will start the roll immediately according to defined batches. Note that the first response for a successful request will indicate the start of a roll. In order to check the status of a roll, you can use the [GET Roll API](https://spec.dev.spot.io/#operation/oceanEcsRollGetSingleRoll) using the roll identifier.\n",
        "operationId": "oceanEcsRollInit",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "Roll",
                    "properties": {
                      "roll": {
                        "allOf": [
                          {
                            "type": "object",
                            "properties": {
                              "batchSizePercentage": {
                                "type": "integer",
                                "description": "Value (in percent) to set size of batch in roll. Valid values are 0-100.\n",
                                "example": 20
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "comment": {
                                "type": "string",
                                "description": "Add a brief description for the roll. The comment is limited to 256 chars.\n",
                                "example": "This is why I rolled my cluster."
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "batchMinHealthyPercentage": {
                                "type": "integer",
                                "description": "Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n",
                                "example": 100,
                                "default": 50
                              }
                            }
                          }
                        ]
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "Roll with instance ids",
                    "properties": {
                      "roll": {
                        "allOf": [
                          {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/0"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/1"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/2"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "instanceIds": {
                                "type": "array",
                                "description": "List of instance identifiers to be rolled. Each identifier is a string. Can be null. Cannot be used together with launchSpecIds.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "i-0003a99ffb566f039",
                                  "i-0567a99ffb566f765"
                                ]
                              }
                            }
                          }
                        ]
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "Roll with Virtual Node Group ids",
                    "properties": {
                      "roll": {
                        "allOf": [
                          {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/0"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/1"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/2"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "launchSpecIds": {
                                "type": "array",
                                "description": "List of virtual node group identifiers to be rolled. Each identifier is a string. Can be null. Cannot be used together with instanceIds.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "ols-76694a7d",
                                  "ols-56694a76"
                                ]
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Rolls",
        "description": "List rolls of an Ocean cluster.\n",
        "operationId": "oceanEcsRollListRolls",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean ECS Roll Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "oneOf": [
                                  {
                                    "allOf": [
                                      {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string",
                                            "readOnly": true,
                                            "example": "scr-1234abcd"
                                          },
                                          "scope": {
                                            "type": "string",
                                            "enum": [
                                              "Cluster",
                                              "Vngs",
                                              "Vng",
                                              "Instances",
                                              "Instance"
                                            ],
                                            "example": "Cluster"
                                          },
                                          "currentBatch": {
                                            "type": "integer",
                                            "readOnly": true,
                                            "example": 1,
                                            "description": "Batch number that is currenlty being deployed.\n"
                                          },
                                          "numOfBatches": {
                                            "type": "integer",
                                            "readOnly": true,
                                            "example": 2,
                                            "description": "Total number of batches the deployment will process.\n"
                                          },
                                          "progress": {
                                            "type": "object",
                                            "readOnly": true,
                                            "properties": {
                                              "unit": {
                                                "type": "string",
                                                "example": "percentage"
                                              },
                                              "value": {
                                                "type": "integer",
                                                "example": 10
                                              },
                                              "detailedStatus": {
                                                "type": "object",
                                                "properties": {
                                                  "oldInstances": {
                                                    "type": "array",
                                                    "items": {
                                                      "type": "object",
                                                      "properties": {
                                                        "instanceId": {
                                                          "type": "string"
                                                        },
                                                        "status": {
                                                          "type": "string"
                                                        }
                                                      }
                                                    },
                                                    "example": [
                                                      {
                                                        "instanceId": "i-003a0281a24c01a20",
                                                        "status": "REPLACED"
                                                      },
                                                      {
                                                        "instanceId": "i-003a0281a24c01a21",
                                                        "status": "TO_BE_REPLACED"
                                                      },
                                                      {
                                                        "instanceId": "i-003a0281a24c01a22",
                                                        "status": "COULD_NOT_BE_REPLACED"
                                                      }
                                                    ]
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          "oceanId": {
                                            "type": "string",
                                            "example": "o-abcd1234",
                                            "readOnly": true,
                                            "description": "The Ocean ECS cluster that is being rolled.\n"
                                          },
                                          "createdAt": {
                                            "type": "string",
                                            "readOnly": true,
                                            "format": "date-time",
                                            "example": "2019-06-03T08:13:08.000Z",
                                            "description": "A timestamp of the roll creation.\n"
                                          },
                                          "updatedAt": {
                                            "type": "string",
                                            "readOnly": true,
                                            "format": "date-time",
                                            "example": "2019-06-10T15:06:13.000Z",
                                            "description": "The timestamp of the latest roll update.\n"
                                          }
                                        }
                                      },
                                      {
                                        "type": "object",
                                        "properties": {
                                          "status": {
                                            "type": "string",
                                            "description": "Sets the status of the roll.\n",
                                            "example": "IN_PROGRESS",
                                            "enum": [
                                              "IN_PROGRESS",
                                              "COMPLETED",
                                              "FAILED",
                                              "STOPPED"
                                            ]
                                          }
                                        }
                                      },
                                      {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/1"
                                      },
                                      {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/2"
                                      },
                                      {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/1/properties/roll/allOf/3"
                                      }
                                    ]
                                  },
                                  {
                                    "allOf": [
                                      {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/oneOf/0/allOf/0"
                                      },
                                      {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/oneOf/0/allOf/1"
                                      },
                                      {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/1"
                                      },
                                      {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/2"
                                      },
                                      {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/2/properties/roll/allOf/3"
                                      }
                                    ]
                                  }
                                ]
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:ecs:cluster:roll"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{oceanClusterId}/roll/{ROLL_ID}": {
      "put": {
        "summary": "Update Roll",
        "description": "Update a roll of an Ocean cluster. Performing the request will stop the next batch in a roll.\n",
        "operationId": "oceanEcsRollUpdate",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "in": "path",
            "name": "ROLL_ID",
            "example": "scr-12345abc",
            "description": "Ocean Cluster Roll identifier\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "roll": {
                        "type": "object",
                        "required": [
                          "status"
                        ],
                        "description": "Sets the status of the roll.\n",
                        "properties": {
                          "status": {
                            "type": "string",
                            "enum": [
                              "STOPPED"
                            ],
                            "description": "Set status of a roll. Valid values: \"STOPPED\"\n",
                            "example": "STOPPED"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Roll",
        "description": "Get status for roll of an Ocean cluster.\n",
        "operationId": "oceanEcsRollGetSingleRoll",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll~1%7BROLL_ID%7D/put/parameters/2"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{oceanClusterId}/containerInstances": {
      "get": {
        "summary": "Get Cluster Container Instances",
        "description": "Get container instances data of an Ocean cluster.\n",
        "operationId": "oceanAwsEcsGetContainerInstances",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1nodes/get/parameters/2"
          },
          {
            "in": "query",
            "name": "instanceId",
            "schema": {
              "type": "string"
            },
            "example": "i-123",
            "description": "Get a specific container instance ec2 instance id."
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AWS Container Instances Data Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/ecs/cluster/o-12345abc/containerInstances"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "AWS Ocean ECS Container Instance Data",
                                "description": "Container Instance of Ocean cluster.",
                                "properties": {
                                  "instanceId": {
                                    "type": "string",
                                    "example": "i-123",
                                    "description": "The AWS instance id of this container instance.\n"
                                  },
                                  "instanceType": {
                                    "type": "string",
                                    "example": "c3.large",
                                    "description": "The AWS instance type of this container instance.\n"
                                  },
                                  "availabilityZone": {
                                    "type": "string",
                                    "example": "us-west-2b",
                                    "description": "The AWS availability zone of this container instance.\n"
                                  },
                                  "launchSpecId": {
                                    "type": "string",
                                    "example": "ols-123",
                                    "description": "The container instance's Virtual Node Group id.\n"
                                  },
                                  "launchSpecName": {
                                    "type": "string",
                                    "example": "dev-launchSpec",
                                    "description": "The container instance's Virtual Node Group name.\n"
                                  },
                                  "lifeCycle": {
                                    "type": "string",
                                    "enum": [
                                      "Spot",
                                      "OD",
                                      "OD (RI)"
                                    ],
                                    "example": "Spot",
                                    "description": "The AWS lifeCycle of this container instance.\n"
                                  },
                                  "publicIp": {
                                    "type": "string",
                                    "example": "1.2.3.4",
                                    "description": "This container instance's public ip.\n"
                                  },
                                  "workloadRequestedCpuUnit": {
                                    "type": "number",
                                    "format": "double",
                                    "example": 1320,
                                    "description": "The amount of cpu units requested by the ECS workload.\n"
                                  },
                                  "workloadRequestedMemoryInMiB": {
                                    "type": "number",
                                    "example": 500,
                                    "description": "The amount of memory in MiB requested by the ECS workload.\n"
                                  },
                                  "workloadRequestedGpu": {
                                    "type": "number",
                                    "example": 1,
                                    "description": "The amount of gpus requested by the ECS workload.\n"
                                  },
                                  "headroomRequestedCpuUnit": {
                                    "type": "number",
                                    "example": 1320,
                                    "description": "The amount of cpu units saved for headroom.\n"
                                  },
                                  "headroomRequestedMemoryInMiB": {
                                    "type": "number",
                                    "example": 512,
                                    "description": "The amount of memory in MiB saved for headroom.\n"
                                  },
                                  "headroomRequestedGpu": {
                                    "type": "number",
                                    "example": 1,
                                    "description": "The amount of gpus saved for headroom.\n"
                                  },
                                  "registeredCpuUnit": {
                                    "type": "number",
                                    "example": 2000,
                                    "description": "The amount of registered cpu units as registered in ECS.\n"
                                  },
                                  "registeredMemoryInMiB": {
                                    "type": "number",
                                    "example": 3646.1,
                                    "description": "The amount of registered memory in MiB as registered in ECS.\n"
                                  },
                                  "registeredGpu": {
                                    "type": "number",
                                    "example": 1,
                                    "description": "The amount of registered gpus as registered in ECS.\n"
                                  },
                                  "containerInstanceId": {
                                    "type": "string",
                                    "example": "abcdefg",
                                    "description": "The ECS container instance id.\n"
                                  },
                                  "registrationStatus": {
                                    "type": "string",
                                    "enum": [
                                      "Registered",
                                      "Registering",
                                      "Failed"
                                    ],
                                    "example": "Registered",
                                    "description": "The registration status of this container instance.\n"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2021-10-1T05:51:06.000Z",
                                    "description": "When was this container instance's EC2 instance was created at.\n"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:ecs:containerInstances"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{oceanClusterId}/detachInstances": {
      "put": {
        "summary": "Detach Instances",
        "description": "Detach instances from your Ocean cluster.\n",
        "operationId": "oceanEcsDetachInstance",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "instancesToDetach"
                    ],
                    "properties": {
                      "instancesToDetach": {
                        "type": "array",
                        "description": "Array of instance identifiers to be detached.\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "i-0003a99ffb566f039",
                          "i-0567a99ffb566f765"
                        ]
                      },
                      "shouldTerminateInstances": {
                        "type": "boolean",
                        "description": "Determines whether the detached EC2 instances should be terminated or not.\n",
                        "example": true
                      },
                      "shouldDecrementTargetCapacity": {
                        "type": "boolean",
                        "description": "Determines whether the Ocean cluster's target capacity should be decremented.\n",
                        "example": false
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Detach Instances Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/ecs/cluster/o-abcd1234/detachInstances"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/launchSpec": {
      "post": {
        "summary": "Create VNG",
        "description": "Create a new Ocean ECS virtual node group in the specified account.\n",
        "operationId": "OceanECSLaunchSpecCreate",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "launchSpec"
                    ],
                    "properties": {
                      "launchSpec": {
                        "type": "object",
                        "description": "AWS Cluster Virtual Node Group (VNG).\n",
                        "required": [
                          "oceanId",
                          "name"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "readOnly": true,
                            "example": "ols-1234abcd"
                          },
                          "oceanId": {
                            "type": "string",
                            "description": "The Ocean cluster identifier. Required for to create a virtual node group.\n",
                            "example": "o-1234abcd"
                          },
                          "name": {
                            "type": "string",
                            "description": "User given name of the virtual node group.\n",
                            "example": "mySpecLauncher"
                          },
                          "imageId": {
                            "type": "string",
                            "description": "Set image identifier. Can be null.\n",
                            "example": "img2"
                          },
                          "images": {
                            "type": "array",
                            "description": "An array of image objects. <br>\n* You can configure VNG with either the imageId or images objects, but not both simultaneously.\n* For each architecture type (amd64, arm64) only one AMI is allowed.\n* Valid values: null, or an array with at least one element\n",
                            "items": {
                              "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec/properties/images/items"
                            }
                          },
                          "userData": {
                            "type": "string",
                            "format": "byte",
                            "description": "Base64-encoded MIME user data to make available to the instances.\n",
                            "example": "dXNlcmJhc2g2NGVuY29kZWQ="
                          },
                          "securityGroupIds": {
                            "type": "array",
                            "description": "Set security groups. Each element in array should be a security group identifier.\n",
                            "items": {
                              "type": "string",
                              "example": "sg1, sg3"
                            }
                          },
                          "instanceTypes": {
                            "type": "array",
                            "description": "An array of supported instance types for the VNG.\n",
                            "items": {
                              "type": "string",
                              "example": "c3.2xlarge, c4.2xlarge"
                            }
                          },
                          "preferredSpotTypes": {
                            "type": "array",
                            "description": "When Ocean scales up instances, it takes your preferred types into consideration while maintaining a variety of machine types running for optimized distribution. [Learn More](https://docs.flexera.com/spot/ocean/features/vngs/attributes-and-actions-per-vng?id=preferred-spot-instance-types-per-vng)\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "c3.2xlarge",
                              "c4.2xlarge"
                            ]
                          },
                          "subnetIds": {
                            "type": "array",
                            "description": "Set the subnets in the VNG. Each element in the array should be a subnet identifier.\n",
                            "items": {
                              "type": "string",
                              "example": "subnet-01234566789abcdef, subnet-9876543210ghijkl"
                            }
                          },
                          "iamInstanceProfile": {
                            "type": "array",
                            "description": "The instance profile iamRole object.\n",
                            "items": {
                              "oneOf": [
                                {
                                  "title": "arn",
                                  "type": "string",
                                  "description": "The iamRole ARN. If set, do not set launchSpec.iamInstanceProfile.name\n",
                                  "example": "arn:aws:iam::123456789123:instance-profile"
                                },
                                {
                                  "title": "name",
                                  "type": "string",
                                  "description": "The iamRole name. If set, do not set launchSpec.iamInstanceProfile.arn\n",
                                  "example": "my-iamInstance-Profile"
                                }
                              ]
                            }
                          },
                          "attributes": {
                            "description": "Add attributes to the cluster.\n",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "key",
                                "value"
                              ],
                              "properties": {
                                "key": {
                                  "description": "Give the attribute a key.\n",
                                  "type": "string",
                                  "example": "key1"
                                },
                                "value": {
                                  "description": "Set the value of the attribute.\n",
                                  "type": "string",
                                  "example": "value1"
                                }
                              }
                            }
                          },
                          "autoScale": {
                            "type": "object",
                            "properties": {
                              "headrooms": {
                                "description": "Set custom headroom per VNG. Provide a list of launchSpec.autoscale.headroom objects.\n",
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "numOfUnits"
                                  ],
                                  "properties": {
                                    "cpuPerUnit": {
                                      "description": "Configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n",
                                      "type": "integer",
                                      "example": 1024
                                    },
                                    "memoryPerUnit": {
                                      "description": "Configure the amount of memory (MiB) to allocate the headroom.\n",
                                      "type": "integer",
                                      "example": 512
                                    },
                                    "numOfUnits": {
                                      "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                      "type": "integer",
                                      "example": 2
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "tags": {
                            "description": "List of kay-value pairs of tags.\n",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "tagKey": {
                                  "type": "string",
                                  "description": "Set the tag key.\n",
                                  "example": "Creator"
                                },
                                "tagValue": {
                                  "type": "string",
                                  "description": "Set the tag value.\n",
                                  "example": "John Doe"
                                }
                              }
                            }
                          },
                          "blockDeviceMappings": {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec/properties/blockDeviceMappings"
                          },
                          "restrictScaleDown": {
                            "type": "boolean",
                            "description": "When set to True, the VNG container instances will be treated as if all tasks running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints). Therefore, Ocean will not scale down container instances unless they are empty.\n",
                            "example": false
                          },
                          "instanceMetadataOptions": {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec/properties/instanceMetadataOptions"
                          },
                          "scheduling": {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec/properties/scheduling"
                          },
                          "strategy": {
                            "type": "object",
                            "description": "Similar to a strategy for an Ocean cluster, but applying only to a virtual node group.\n",
                            "properties": {
                              "spotPercentage": {
                                "type": "integer",
                                "description": "The desired percentage of the Spot instances out of all running container instances. Defaults to 100 when not set.\\\nOnly available when the field is **not** set in the cluster directly (Ocean.Strategy.spotPercentage)\n",
                                "minimum": 0,
                                "maximum": 100,
                                "example": 70,
                                "default": 100
                              }
                            }
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2019-06-03T08:13:08.000Z"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2019-06-10T15:06:13.000Z"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/ecs/launchSpec"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec/post/requestBody/content/application~1json/schema/allOf/0/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:ecs:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List VNGs",
        "description": "Get all the custom VNGs for all Ocean clusters in the specified account.\n",
        "operationId": "OceanECSLaunchSpecList",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "oceanId",
            "schema": {
              "type": "string"
            },
            "example": "o-12345abc",
            "description": "Identifier of the Ocean cluster.\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/ecs/launchSpec"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec/post/requestBody/content/application~1json/schema/allOf/0/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:ecs:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/launchSpec/{launchSpecId}": {
      "get": {
        "summary": "Get VNG",
        "description": "Get a specific custom launch configuration for an Ocean cluster in the specified account.\n",
        "operationId": "OceanECSLaunchSpecGet",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "launchSpecId",
            "description": "Ocean cluster Virtual Node Group identifier.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/ecs/launchSpec/ols-12345abc"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec/post/requestBody/content/application~1json/schema/allOf/0/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:ecs:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete VNG",
        "description": "Delete a specified virtual node group in an Ocean cluster.\n",
        "operationId": "OceanECSLaunchSpecDelete",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          },
          {
            "in": "query",
            "name": "deleteContainerInstances",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "When set to \"true\", all instances belonging to the deleted VNG will be drained, detached, and terminated.\n",
            "example": true
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Delete Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/ecs/launchSpec/ols-12345abc"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update VNG",
        "description": "Update a specified virtual node group in an Ocean cluster.\n",
        "operationId": "OceanECSLaunchSpecUpdate",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/2"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "launchSpec"
                ],
                "properties": {
                  "launchSpec": {
                    "type": "object",
                    "description": "AWS Cluster Virtual Node Group (VNG).\n",
                    "properties": {
                      "id": {
                        "type": "string",
                        "readOnly": true,
                        "example": "ols-1234abcd"
                      },
                      "name": {
                        "type": "string",
                        "description": "User given name of the virtual node group.\n",
                        "example": "mySpecLauncher"
                      },
                      "imageId": {
                        "type": "string",
                        "description": "Set image identifier. Can be null.\n",
                        "example": "img2"
                      },
                      "images": {
                        "type": "array",
                        "description": "An array of image objects. <br>\n* You can configure VNG with either the imageId or images objects, but not both simultaneously.\n* For each architecture type (amd64, arm64) only one AMI is allowed.\n* Valid values: null, or an array with at least one element\n",
                        "items": {
                          "type": "object",
                          "title": "Image object, containing the id of the image used to launch instances.",
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Identifier of the image in AWS. Valid values: any string which is not empty or null.\n",
                              "example": "ami-ID"
                            }
                          }
                        }
                      },
                      "userData": {
                        "type": "string",
                        "format": "byte",
                        "description": "Base64-encoded MIME user data to make available to the instances.\n",
                        "example": "dXNlcmJhc2g2NGVuY29kZWQ="
                      },
                      "securityGroupIds": {
                        "type": "array",
                        "description": "Set security groups. Each element in array should be a security group identifier.\n",
                        "items": {
                          "type": "string",
                          "example": "sg1, sg3"
                        }
                      },
                      "instanceTypes": {
                        "type": "array",
                        "description": "An array of supported instance types for the VNG.\n",
                        "items": {
                          "type": "string",
                          "example": "c3.2xlarge, c4.2xlarge"
                        }
                      },
                      "preferredSpotTypes": {
                        "type": "array",
                        "description": "When Ocean scales up instances, it takes your preferred types into consideration while maintaining a variety of machine types running for optimized distribution. [Learn More](https://docs.flexera.com/spot/ocean/features/vngs/attributes-and-actions-per-vng?id=preferred-spot-instance-types-per-vng)\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "c3.2xlarge",
                          "c4.2xlarge"
                        ]
                      },
                      "subnetIds": {
                        "type": "array",
                        "description": "Set the subnets in the VNG. Each element in the array should be a subnet identifier.\n",
                        "items": {
                          "type": "string",
                          "example": "subnet-01234566789abcdef, subnet-9876543210ghijkl"
                        }
                      },
                      "iamInstanceProfile": {
                        "type": "array",
                        "description": "The instance profile iamRole object.\n",
                        "items": {
                          "oneOf": [
                            {
                              "title": "arn",
                              "type": "string",
                              "description": "The iamRole ARN. If set, do not set launchSpec.iamInstanceProfile.name\n",
                              "example": "arn:aws:iam::123456789123:instance-profile"
                            },
                            {
                              "title": "name",
                              "type": "string",
                              "description": "The iamRole name. If set, do not set launchSpec.iamInstanceProfile.arn\n",
                              "example": "my-iamInstance-Profile"
                            }
                          ]
                        }
                      },
                      "attributes": {
                        "description": "Add attributes to the cluster.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "required": [
                            "key",
                            "value"
                          ],
                          "properties": {
                            "key": {
                              "description": "Give the attribute a key.\n",
                              "type": "string",
                              "example": "key1"
                            },
                            "value": {
                              "description": "Set the value of the attribute.\n",
                              "type": "string",
                              "example": "value1"
                            }
                          }
                        }
                      },
                      "autoScale": {
                        "type": "object",
                        "properties": {
                          "headrooms": {
                            "description": "Set custom headroom per VNG. Provide a list of launchSpec.autoscale.headroom objects.\n",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "numOfUnits"
                              ],
                              "properties": {
                                "cpuPerUnit": {
                                  "description": "Configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n",
                                  "type": "integer",
                                  "example": 1024
                                },
                                "memoryPerUnit": {
                                  "description": "Configure the amount of memory (MiB) to allocate the headroom.\n",
                                  "type": "integer",
                                  "example": 512
                                },
                                "numOfUnits": {
                                  "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                  "type": "integer",
                                  "example": 2
                                }
                              }
                            }
                          }
                        }
                      },
                      "tags": {
                        "description": "List of kay-value pairs of tags.\n",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "tagKey": {
                              "type": "string",
                              "description": "Set the tag key.\n",
                              "example": "Creator"
                            },
                            "tagValue": {
                              "type": "string",
                              "description": "Set the tag value.\n",
                              "example": "John Doe"
                            }
                          }
                        }
                      },
                      "blockDeviceMappings": {
                        "type": "array",
                        "description": "Block devices that are exposed to the instance. You can specify virtual devices and EBS volumes. This parameter and rootVolumeSize cannot be in the configuration at the same time. This parameter can be null, but if not null, it must contain at least one block device.\n",
                        "items": {
                          "type": "object",
                          "properties": {
                            "deviceName": {
                              "type": "string",
                              "description": "Set device name.\n",
                              "example": "/dev/xvda"
                            },
                            "ebs": {
                              "type": "object",
                              "description": "Set EBS properties.\n",
                              "properties": {
                                "throughput": {
                                  "type": "integer",
                                  "minimum": 125,
                                  "maximum": 1000,
                                  "example": 125,
                                  "description": "The amount of data transferred to or from a storage device per second. You can use this parameter only if volumetype=‘gp3’.\n"
                                },
                                "deleteOnTermination": {
                                  "type": "boolean",
                                  "description": "Flag to delete the EBS on instance termination.\n",
                                  "example": false
                                },
                                "encrypted": {
                                  "type": "boolean",
                                  "example": false
                                },
                                "iops": {
                                  "type": "integer",
                                  "description": "Must be greater than or equal to 0.\n",
                                  "example": 1
                                },
                                "kmsKeyId": {
                                  "type": "string",
                                  "example": "alias/aws/ebs"
                                },
                                "snapshotId": {
                                  "type": "string",
                                  "example": "snap-abcdefghi111110"
                                },
                                "volumeType": {
                                  "type": "string",
                                  "description": "Set volume type.\n",
                                  "example": "gp2"
                                },
                                "volumeSize": {
                                  "type": "integer",
                                  "description": "Set volume size (in GB). When using this property, you cannot use dynamicVolumeSize. You must use one or the other. Volume size should be greater than or equal to the size configured in the AMI.\n"
                                },
                                "dynamicVolumeSize": {
                                  "type": "object",
                                  "required": [
                                    "baseSize",
                                    "resource",
                                    "sizePerResourceUnit"
                                  ],
                                  "description": "Set dynamic volume size properties. When using this object, you cannot use volumeSize. You must use one or the other.\n",
                                  "properties": {
                                    "baseSize": {
                                      "type": "integer",
                                      "description": "Initial size per volume.\n",
                                      "example": 50
                                    },
                                    "resource": {
                                      "type": "string",
                                      "example": "CPU"
                                    },
                                    "sizePerResourceUnit": {
                                      "type": "integer",
                                      "description": "Additional size per resource unit (in GB). For example: if baseSize=50, and sizePerResourceUnit=20, and an instance with 2 CPU is launched, its disk size will be: 90 GB.\n",
                                      "example": 20
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "restrictScaleDown": {
                        "type": "boolean",
                        "description": "When set to True, the VNG container instances will be treated as if all tasks running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints). Therefore, Ocean will not scale down container instances unless they are empty.\n",
                        "example": false
                      },
                      "instanceMetadataOptions": {
                        "type": "object",
                        "title": "instanceMetadataOptions",
                        "required": [
                          "httpTokens"
                        ],
                        "description": "Ocean instance metadata options object for [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html).\n",
                        "properties": {
                          "httpTokens": {
                            "type": "string",
                            "description": "Determines if a signed token is required or not.\n",
                            "enum": [
                              "optional",
                              "required"
                            ],
                            "example": "optional"
                          },
                          "httpPutResponseHopLimit": {
                            "type": "integer",
                            "description": "An integer from 1 through 64.\nThe desired HTTP PUT response hop limit for instance metadata requests.\nThe larger the number, the further the instance metadata requests can travel.\n",
                            "example": 12
                          }
                        }
                      },
                      "scheduling": {
                        "type": "object",
                        "description": "An object used to define scheduled tasks such as a manual headroom update.\n",
                        "title": "Ocean Scheduling",
                        "properties": {
                          "tasks": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "title": "Task Definition",
                              "required": [
                                "isEnabled",
                                "cronExpression",
                                "taskType"
                              ],
                              "properties": {
                                "isEnabled": {
                                  "type": "boolean",
                                  "example": true,
                                  "description": "Describes whether the task is enabled. When True, the task runs. When False, it does not run. Required for launchSpec.scheduling.tasks. In case automatic headroom is configured, please make sure to set autoScaler.enableAutomaticAndManualHeadroom on Ocean level to true in order to make sure that the manual headroom would be affective.\n"
                                },
                                "cronExpression": {
                                  "type": "string",
                                  "example": "0 1 * * *",
                                  "description": "A valid cron expression. For example : \" * * * * * \". The cron job runs in UTC time and is in Unix cron format. (See the Cron Expression Validator Script.)\n"
                                },
                                "taskType": {
                                  "type": "string",
                                  "example": "manualHeadroomUpdate",
                                  "enum": [
                                    "manualHeadroomUpdate"
                                  ],
                                  "description": "The activity that you are scheduling. Valid values: \"manualHeadroomUpdate\". Required for launchSpec.scheduling.tasks.\n"
                                },
                                "config": {
                                  "description": "The config of this scheduled task. Depends on the value of `taskType`.",
                                  "oneOf": [
                                    {
                                      "type": "object",
                                      "title": "manualHeadroomUpdate",
                                      "required": [
                                        "headrooms"
                                      ],
                                      "properties": {
                                        "headrooms": {
                                          "description": "Set custom headroom per VNG. Provide a list of launchSpec.autoscale.headroom objects.\n",
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "cpuPerUnit": {
                                                "description": "Configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n",
                                                "type": "integer"
                                              },
                                              "memoryPerUnit": {
                                                "description": "Configure the amount of memory (MiB) to allocate the headroom.\n",
                                                "type": "integer"
                                              },
                                              "numOfUnits": {
                                                "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                                "type": "integer"
                                              }
                                            }
                                          },
                                          "example": [
                                            {
                                              "cpuPerUnit": 1024,
                                              "memoryPerUnit": 512,
                                              "numOfUnits": 2
                                            }
                                          ]
                                        }
                                      }
                                    }
                                  ]
                                }
                              }
                            }
                          }
                        }
                      },
                      "strategy": {
                        "type": "object",
                        "description": "Similar to a strategy for an Ocean cluster, but applying only to a virtual node group.\n",
                        "properties": {
                          "spotPercentage": {
                            "type": "integer",
                            "description": "The desired percentage of the Spot instances out of all running container instances. Defaults to 100 when not set.\\\nOnly available when the field is **not** set in the cluster directly (Ocean.Strategy.spotPercentage)\n",
                            "minimum": 0,
                            "maximum": 100,
                            "example": 70,
                            "default": 100
                          }
                        }
                      },
                      "createdAt": {
                        "type": "string",
                        "readOnly": true,
                        "format": "date-time",
                        "example": "2019-06-03T08:13:08.000Z"
                      },
                      "updatedAt": {
                        "type": "string",
                        "readOnly": true,
                        "format": "date-time",
                        "example": "2019-06-10T15:06:13.000Z"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/ecs/launchSpec/ols-12345abc"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:ecs:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{oceanClusterId}/fargateMigration": {
      "post": {
        "summary": "Import Fargate To Existing Ocean Cluster",
        "description": "Import a Fargate service into an existing Ocean ECS cluster.\nUpon Fargate service import, Spot clones the selected Fargate services and runs them with the same VPC & Subnet settings on EC2 spot Instances.\nOcean will automatically and seamlessly predict and replace spot instances before they are interrupted, ensuring the uptime of the cluster and providing cost-savings of up to 90% over Fargate-enabled ECS clusters.\n",
        "operationId": "oceanEcsFargateImportToExist",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "config",
                    "properties": {
                      "services": {
                        "type": "array",
                        "description": "List of Fargate services by their names. Must contain at least one service.\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "service_1",
                          "service_2"
                        ]
                      },
                      "simpleNewServiceNames": {
                        "type": "boolean",
                        "description": "Flag to align imported service names in the following format: sfm_\n",
                        "example": false,
                        "default": false
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean ECS Fargate Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "example": "efm-d235b4d8"
                                  },
                                  "oceanId": {
                                    "type": "string",
                                    "example": "o-fgdfgdf"
                                  },
                                  "state": {
                                    "type": "string",
                                    "example": "STARTING"
                                  },
                                  "config": {
                                    "type": "object",
                                    "properties": {
                                      "services": {
                                        "type": "array",
                                        "description": "List of Fargate services by their names. Must contain at least one service.\n",
                                        "items": {
                                          "type": "string"
                                        },
                                        "example": [
                                          "service_1",
                                          "service_2"
                                        ]
                                      }
                                    }
                                  },
                                  "simpleNewServiceNames": {
                                    "type": "boolean",
                                    "description": "Flag to align imported service names in the following format: sfm_\n",
                                    "example": false,
                                    "default": false
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{oceanClusterId}/fargateMigration/serviceDiscovery": {
      "get": {
        "summary": "Get Fargate Services Discovery",
        "description": "Get existing Fargate services in the ECS cluster.\n",
        "operationId": "oceanEcsFargateGetServicesDiscovery",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean ECS Fargate Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "ecsClusterName": {
                                    "type": "string",
                                    "example": "EcsTestCluster"
                                  },
                                  "ecsClusterRegion": {
                                    "type": "string",
                                    "example": "us-east-2"
                                  },
                                  "serviceNames": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "test_with_1",
                                        "test_without"
                                      ]
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "type": "string",
                              "example": "spotinst:ocean:aws:ecs:fargateMigration:serviceDiscovery"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{oceanClusterId}/fargateMigration/status": {
      "get": {
        "summary": "Get Fargate Migration Status",
        "description": "Get the status of a Fargate service import.\n",
        "operationId": "oceanEcsFargateGetMigrationStatus",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean ECS Fargate Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "ecsClusterName": {
                                    "type": "string",
                                    "example": "EcsTestCluster"
                                  },
                                  "ecsClusterRegion": {
                                    "type": "string",
                                    "example": "us-east-2"
                                  },
                                  "state": {
                                    "type": "string",
                                    "example": "FINISHED"
                                  },
                                  "importedServices": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "example": "test_with_1"
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "type": "string",
                              "example": "spotinst:ocean:aws:ecs:fargateMigration:status"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/fargate/import": {
      "post": {
        "summary": "Import Fargate To New Ocean Cluster",
        "description": "This API copies the configuration from a Fargate service into the corresponding fields of an Ocean object.\n(This process is commonly referred to as importing.)\nThe API returns an Ocean object that is suitable for use in the [Create API](https://spec.dev.spot.io/#operation/oceanEcsCreate/) to create a new Ocean cluster based on your Fargate configuration.\nIf you are migrating a Fargate service that has tags, you must run the Opt In procedure on your Amazon account or IAM role.\nThis is required in order to obtain the necessary Amazon Resource Name (ARN) and resource identifier format for your ECS tasks, container instances, and services.\nFor more information about the required ARN and the Opt In procedure, see the following pages:\n\n* [Amazon Resource Names (ARNs) and identifiers](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#ecs-resource-ids)\n* [Migrating your Amazon ECS deployment to the new ARN and resource identifier format](https://aws.amazon.com/blogs/compute/migrating-your-amazon-ecs-deployment-to-the-new-arn-and-resource-id-format-2/)\n\nThe API requires one of the following permissions to be defined in Spot -\n\n* Permission: Account Editor (See [User Roles](https://docs.flexera.com/spot/administration/users/)) or\n* Action: ocean:importOceanFromFargate (See [Access Policies](https://docs.flexera.com/spot/administration/access-policies/))\n",
        "operationId": "oceanEcsFargateImportToNew",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "oceanClusterName",
                      "ecsClusterName",
                      "region",
                      "services"
                    ],
                    "properties": {
                      "oceanClusterName": {
                        "type": "string",
                        "description": "Name of the cluster in new Ocean object.",
                        "example": "fargate-import-ocean"
                      },
                      "ecsClusterName": {
                        "type": "string",
                        "description": "Name of the cluster in ECS.",
                        "example": "fargateTestCluster"
                      },
                      "region": {
                        "type": "string",
                        "description": "Name of the AWS region the ECS cluster is in.",
                        "example": "us-west-1"
                      },
                      "services": {
                        "type": "array",
                        "description": "Name of the ECS Fargate service to be imported.",
                        "items": {
                          "type": "array",
                          "items": {
                            "allOf": [
                              {
                                "type": "string",
                                "example": "service_1"
                              },
                              {
                                "type": "string",
                                "example": "service_2"
                              }
                            ]
                          }
                        }
                      },
                      "keyPair": {
                        "type": "string",
                        "description": "Specify a key pair to attach to the services.",
                        "example": "spot-prod"
                      },
                      "tags": {
                        "type": "array",
                        "description": "Set tags for the service. Items should be unique.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "tagKey": {
                              "type": "string",
                              "description": "The tag's key.",
                              "example": "env"
                            },
                            "tagValue": {
                              "type": "string",
                              "description": "The tag's name.",
                              "example": "prod"
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean ECS Import Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "required": [
                                  "cluster"
                                ],
                                "properties": {
                                  "cluster": {
                                    "type": "object",
                                    "title": "ECS Ocean",
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "example": "Ocean::my-elastigroup-name",
                                        "description": "Add a name for the Ocean cluster.\n"
                                      },
                                      "clusterName": {
                                        "type": "string",
                                        "example": "my-ECS-cluster-name",
                                        "description": "ECS cluster name.\n"
                                      },
                                      "autoScaler": {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/autoScaler"
                                      },
                                      "region": {
                                        "type": "string",
                                        "example": "us-east-1",
                                        "description": "Select the region for the Ocean cluster to run in.\n"
                                      },
                                      "capacity": {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/capacity"
                                      },
                                      "strategy": {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/strategy"
                                      },
                                      "compute": {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/compute"
                                      },
                                      "scheduling": {
                                        "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/scheduling"
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:ecs"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/cluster/{oceanClusterId}/aggregatedCosts": {
      "post": {
        "summary": "Get Ecs Cluster Aggregated Detailed Costs",
        "description": "Provides Ecs cluster resource usage and costs over a time interval which can be grouped and/or filtered by AWS tags,\\\nfor example - application name (webapp, backend), environment (production, staging), version etc.\\\nThe response will contain a breakdown of the cluster resource costs($) in terms of compute (CPU, memory), storage (block, file, rootVolume).\nThe response will group the cluster usage costs based on the preselected default of Ecs Group Type which is composed of Service, Headroom, Custom Object,\nIdle and Standalone, or user selected AWS tags.\\\nWithin the default grouping, costs are broken down for the Service group, and for tag grouping the costs will be broken up by tag value.\n\nTime Rounding Down: The CostAnalysis API applies rounding down to the hours provided during the call.\\\nFor example, the value 1707004799099 (In GMT) representing Saturday, February 3, 2024, 23:59:59.099 is rounded down to Saturday, February 3, 2024, 23:00:00.000, resulting in the omission of one hour of cost.\n",
        "operationId": "oceanECSClusterAggregatedDetailedCosts",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "endTime",
                      "startTime"
                    ],
                    "properties": {
                      "startTime": {
                        "type": "string",
                        "example": 1675209600000,
                        "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "endTime": {
                        "type": "string",
                        "example": 1675216800000,
                        "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "groupBy": {
                        "type": "string",
                        "description": "The parameter we want to group the costs by, default is grouping by ECS group types. Only a tag key can be passed in.\n",
                        "example": "env"
                      },
                      "filter": {
                        "type": "object",
                        "description": "Describe how to filter the costs. Optional field. Can only be used if grouping by tags.",
                        "required": [
                          "conditions"
                        ],
                        "properties": {
                          "conditions": {
                            "type": "object",
                            "required": [
                              "anyMatch"
                            ],
                            "properties": {
                              "anyMatch": {
                                "type": "array",
                                "description": "Array of conditions set that OR operator is applied between them.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "allMatch"
                                  ],
                                  "properties": {
                                    "allMatch": {
                                      "type": "array",
                                      "description": "Array of conditions that AND operator is applied between them.\\\nFor example, (label env equals prod) AND (label app exists)\n",
                                      "items": {
                                        "type": "object",
                                        "description": "The basic expression of a condition",
                                        "required": [
                                          "key",
                                          "operator"
                                        ],
                                        "properties": {
                                          "key": {
                                            "type": "string",
                                            "description": "May be any string, but shouldn't be empty.\n",
                                            "example": "env"
                                          },
                                          "operator": {
                                            "type": "string",
                                            "example": "equals",
                                            "enum": [
                                              "equals",
                                              "notEquals",
                                              "exists",
                                              "notExists"
                                            ]
                                          },
                                          "value": {
                                            "type": "string",
                                            "description": "Required whenever the operator is \"equals\" or \"notEquals\".\n",
                                            "example": "dev"
                                          }
                                        }
                                      }
                                    }
                                  }
                                },
                                "example": [
                                  {
                                    "allMatch": [
                                      {
                                        "key": "env",
                                        "operator": "equals",
                                        "value": "dev"
                                      },
                                      {
                                        "key": "app",
                                        "operator": "exists"
                                      }
                                    ]
                                  },
                                  {
                                    "allMatch": [
                                      {
                                        "key": "team",
                                        "operator": "exists"
                                      }
                                    ]
                                  }
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean ECS Cluster Aggregated Detailed Costs Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/ecs/cluster/o-abcd1234/aggregatedCosts"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "totalForDuration": {
                                    "type": "object",
                                    "properties": {
                                      "startTime": {
                                        "type": "string",
                                        "example": "2023-02-01T12:00:00.745Z",
                                        "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                      },
                                      "endTime": {
                                        "type": "string",
                                        "example": "2023-02-01T02:00:00.745Z",
                                        "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                      },
                                      "summary": {
                                        "type": "object",
                                        "properties": {
                                          "total": {
                                            "type": "number",
                                            "example": 20000,
                                            "description": "The total costs of cluster in a given time range"
                                          },
                                          "compute": {
                                            "type": "object",
                                            "properties": {
                                              "total": {
                                                "type": "number",
                                                "example": 12000,
                                                "description": "The total compute costs of the cluster in a given time range"
                                              },
                                              "services": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 12000
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          "storage": {
                                            "type": "object",
                                            "properties": {
                                              "total": {
                                                "type": "number",
                                                "example": 8000,
                                                "description": "The total storage costs of the cluster in given time range"
                                              },
                                              "block": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 6000
                                                  },
                                                  "ebsPv": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 4000
                                                      }
                                                    }
                                                  },
                                                  "nonPv": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 2000
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "file": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 2000
                                                  },
                                                  "efsPv": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 2000
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      },
                                      "detailedCostsByTime": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "startTime": {
                                              "type": "string",
                                              "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                            },
                                            "endTime": {
                                              "type": "string",
                                              "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                            },
                                            "summary": {
                                              "type": "object",
                                              "properties": {
                                                "total": {
                                                  "type": "number",
                                                  "description": "The total costs of cluster in a given time range"
                                                },
                                                "compute": {
                                                  "type": "object",
                                                  "properties": {
                                                    "total": {
                                                      "type": "number",
                                                      "description": "The total compute costs of the cluster in a given time range"
                                                    }
                                                  }
                                                },
                                                "storage": {
                                                  "type": "object",
                                                  "properties": {
                                                    "total": {
                                                      "type": "number",
                                                      "description": "The total storage costs of the cluster in given time range"
                                                    },
                                                    "block": {
                                                      "type": "object",
                                                      "properties": {
                                                        "total": {
                                                          "type": "number"
                                                        },
                                                        "ebsPv": {
                                                          "type": "object",
                                                          "properties": {
                                                            "total": {
                                                              "type": "number"
                                                            }
                                                          }
                                                        },
                                                        "nonPv": {
                                                          "type": "object",
                                                          "properties": {
                                                            "total": {
                                                              "type": "number"
                                                            }
                                                          }
                                                        }
                                                      }
                                                    },
                                                    "file": {
                                                      "type": "object",
                                                      "properties": {
                                                        "total": {
                                                          "type": "number"
                                                        },
                                                        "efsPv": {
                                                          "type": "object",
                                                          "properties": {
                                                            "total": {
                                                              "type": "number"
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            },
                                            "groupedBy": {
                                              "type": "string",
                                              "example": "env"
                                            },
                                            "aggregations": {
                                              "type": "object",
                                              "description": "Contains aggregation for each group by value.\n",
                                              "additionalProperties": {
                                                "type": "object",
                                                "description": "For example - if group by is tag with a key 'env', each aggregation will be a corresponding value ('prod','dev' etc.)",
                                                "properties": {
                                                  "summary": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number"
                                                      },
                                                      "compute": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number"
                                                          }
                                                        }
                                                      },
                                                      "storage": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number"
                                                          },
                                                          "block": {
                                                            "type": "object",
                                                            "properties": {
                                                              "total": {
                                                                "type": "number"
                                                              },
                                                              "ebsPv": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "total": {
                                                                    "type": "number"
                                                                  }
                                                                }
                                                              },
                                                              "nonPv": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "total": {
                                                                    "type": "number"
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          },
                                                          "file": {
                                                            "type": "object",
                                                            "properties": {
                                                              "total": {
                                                                "type": "number"
                                                              },
                                                              "efsPv": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "total": {
                                                                    "type": "number"
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "services": {
                                                    "type": "array",
                                                    "items": {
                                                      "type": "object",
                                                      "properties": {
                                                        "name": {
                                                          "type": "string",
                                                          "example": "k8s-events"
                                                        },
                                                        "total": {
                                                          "type": "number"
                                                        },
                                                        "compute": {
                                                          "type": "object",
                                                          "properties": {
                                                            "total": {
                                                              "type": "number"
                                                            }
                                                          }
                                                        },
                                                        "storage": {
                                                          "type": "object",
                                                          "properties": {
                                                            "total": {
                                                              "type": "number"
                                                            },
                                                            "block": {
                                                              "type": "object",
                                                              "properties": {
                                                                "total": {
                                                                  "type": "number"
                                                                },
                                                                "ebsPv": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "total": {
                                                                      "type": "number"
                                                                    }
                                                                  }
                                                                },
                                                                "nonPv": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "total": {
                                                                      "type": "number"
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            },
                                                            "file": {
                                                              "type": "object",
                                                              "properties": {
                                                                "total": {
                                                                  "type": "number"
                                                                },
                                                                "efsPv": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "total": {
                                                                      "type": "number"
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        },
                                        "example": [
                                          {
                                            "startTime": "2023-02-01T12:00:00.745Z",
                                            "endTime": "2023-02-01T01:00:00.745Z",
                                            "summary": {
                                              "total": 10000,
                                              "compute": {
                                                "total": 6000
                                              },
                                              "storage": {
                                                "total": 4000,
                                                "block": {
                                                  "total": 3000,
                                                  "ebsPv": {
                                                    "total": 2000
                                                  },
                                                  "nonPv": {
                                                    "total": 1000
                                                  }
                                                },
                                                "file": {
                                                  "total": 1000,
                                                  "efsPv": {
                                                    "total": 1000
                                                  }
                                                }
                                              }
                                            },
                                            "groupedBy": "env",
                                            "aggregations": {
                                              "dev": {
                                                "summary": {
                                                  "total": 5000,
                                                  "compute": {
                                                    "total": 3000
                                                  },
                                                  "storage": {
                                                    "total": 2000,
                                                    "block": {
                                                      "total": 1500,
                                                      "ebsPv": {
                                                        "total": 1000
                                                      },
                                                      "nonPv": {
                                                        "total": 500
                                                      }
                                                    },
                                                    "file": {
                                                      "total": 500,
                                                      "efsPv": {
                                                        "total": 500
                                                      }
                                                    }
                                                  }
                                                },
                                                "services": [
                                                  {
                                                    "name": "service-1",
                                                    "total": 5000,
                                                    "compute": {
                                                      "total": 3000
                                                    },
                                                    "storage": {
                                                      "total": 2000,
                                                      "block": {
                                                        "total": 1500,
                                                        "ebsPv": {
                                                          "total": 1000
                                                        },
                                                        "nonPv": {
                                                          "total": 500
                                                        }
                                                      },
                                                      "file": {
                                                        "total": 500,
                                                        "efsPv": {
                                                          "total": 500
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              },
                                              "prod": {
                                                "summary": {
                                                  "total": 5000,
                                                  "compute": {
                                                    "total": 3000
                                                  },
                                                  "storage": {
                                                    "total": 2000,
                                                    "block": {
                                                      "total": 1500,
                                                      "ebsPv": {
                                                        "total": 1000
                                                      },
                                                      "nonPv": {
                                                        "total": 500
                                                      }
                                                    },
                                                    "file": {
                                                      "total": 500,
                                                      "efsPv": {
                                                        "total": 500
                                                      }
                                                    }
                                                  }
                                                },
                                                "services": [
                                                  {
                                                    "name": "service-2",
                                                    "total": 5000,
                                                    "compute": {
                                                      "total": 3000
                                                    },
                                                    "storage": {
                                                      "total": 2000,
                                                      "block": {
                                                        "total": 1500,
                                                        "ebsPv": {
                                                          "total": 1000
                                                        },
                                                        "nonPv": {
                                                          "total": 500
                                                        }
                                                      },
                                                      "file": {
                                                        "total": 500,
                                                        "efsPv": {
                                                          "total": 500
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            }
                                          },
                                          {
                                            "startTime": "2023-02-01T01:00:00.745Z",
                                            "endTime": "2023-02-01T02:00:00.745Z",
                                            "summary": {
                                              "total": 10000,
                                              "compute": {
                                                "total": 6000
                                              },
                                              "storage": {
                                                "total": 4000,
                                                "block": {
                                                  "total": 3000,
                                                  "ebsPv": {
                                                    "total": 2000
                                                  },
                                                  "nonPv": {
                                                    "total": 1000
                                                  }
                                                },
                                                "file": {
                                                  "total": 1000,
                                                  "efsPv": {
                                                    "total": 1000
                                                  }
                                                }
                                              }
                                            },
                                            "groupedBy": "env",
                                            "aggregations": {
                                              "dev": {
                                                "summary": {
                                                  "total": 5000,
                                                  "compute": {
                                                    "total": 3000
                                                  },
                                                  "storage": {
                                                    "total": 2000,
                                                    "block": {
                                                      "total": 1500,
                                                      "ebsPv": {
                                                        "total": 1000
                                                      },
                                                      "nonPv": {
                                                        "total": 500
                                                      }
                                                    },
                                                    "file": {
                                                      "total": 500,
                                                      "efsPv": {
                                                        "total": 500
                                                      }
                                                    }
                                                  }
                                                },
                                                "services": [
                                                  {
                                                    "name": "service-1",
                                                    "total": 5000,
                                                    "compute": {
                                                      "total": 3000
                                                    },
                                                    "storage": {
                                                      "total": 2000,
                                                      "block": {
                                                        "total": 1500,
                                                        "ebsPv": {
                                                          "total": 1000
                                                        },
                                                        "nonPv": {
                                                          "total": 500
                                                        }
                                                      },
                                                      "file": {
                                                        "total": 500,
                                                        "efsPv": {
                                                          "total": 500
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              },
                                              "prod": {
                                                "summary": {
                                                  "total": 5000,
                                                  "compute": {
                                                    "total": 3000
                                                  },
                                                  "storage": {
                                                    "total": 2000,
                                                    "block": {
                                                      "total": 1500,
                                                      "ebsPv": {
                                                        "total": 1000
                                                      },
                                                      "nonPv": {
                                                        "total": 500
                                                      }
                                                    },
                                                    "file": {
                                                      "total": 500,
                                                      "efsPv": {
                                                        "total": 500
                                                      }
                                                    }
                                                  }
                                                },
                                                "services": [
                                                  {
                                                    "name": "service-2",
                                                    "total": 5000,
                                                    "compute": {
                                                      "total": 3000
                                                    },
                                                    "storage": {
                                                      "total": 2000,
                                                      "block": {
                                                        "total": 1500,
                                                        "ebsPv": {
                                                          "total": 1000
                                                        },
                                                        "nonPv": {
                                                          "total": 500
                                                        }
                                                      },
                                                      "file": {
                                                        "total": 500,
                                                        "efsPv": {
                                                          "total": 500
                                                        }
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            }
                                          }
                                        ]
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "ocean:ecs:cluster:aggregatedCosts:detailed"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/clusterRoll": {
      "post": {
        "summary": "ECS Initiate Cluster Roll",
        "description": "Initiate a cluster roll for an Elastigroup with ECS cluster\n",
        "operationId": "elastigroupAwsEcsInitiateClusterRoll",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "roll"
                    ],
                    "properties": {
                      "roll": {
                        "type": "object",
                        "required": [
                          "batchSizePercentage"
                        ],
                        "properties": {
                          "batchSizePercentage": {
                            "type": "integer",
                            "example": 20,
                            "description": "Size of patch for roll as a percent\n"
                          },
                          "comment": {
                            "type": "string",
                            "example": "This is why I deployed my cluster.",
                            "description": "Add a comment description for the roll. comment should be limit to 256 chars.\n"
                          },
                          "batchMinHealthyPercentage": {
                            "type": "integer",
                            "default": 50,
                            "example": 100,
                            "description": "Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1clusterRoll/put/responses/200"
          },
          "400": {
            "description": "Bad Request - Deployment already in progress",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 400,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "Bad Request",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            },
                            "errors": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "code": {
                                    "type": "string",
                                    "example": "DEPLOYMENT_ALREADY_IN_PROGRESS"
                                  },
                                  "message": {
                                    "type": "string",
                                    "example": "A group roll is currently running. Cannot start cluster roll until the group roll completes."
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            },
                            "kind": {
                              "type": "string",
                              "description": "The data type of each item in the response\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "put": {
        "summary": "ECS Update Cluster Roll Status",
        "description": "Update a running ECS cluster roll status\n",
        "operationId": "elastigroupAwsEcsUpdateClusterRoll",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "roll"
                    ],
                    "properties": {
                      "roll": {
                        "type": "object",
                        "required": [
                          "status"
                        ],
                        "properties": {
                          "status": {
                            "type": "string",
                            "example": "STOPPED",
                            "description": "Valid values: \"STOPPED\"\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "example": "scr-5aaf854e"
                                  },
                                  "scope": {
                                    "type": "string",
                                    "enum": [
                                      "Cluster",
                                      "Vngs",
                                      "Vng",
                                      "Instances",
                                      "Instance"
                                    ],
                                    "example": "Cluster"
                                  },
                                  "status": {
                                    "type": "string",
                                    "example": "IN_PROGRESS",
                                    "enum": [
                                      "IN_PROGRESS",
                                      "COMPLETED",
                                      "FAILED",
                                      "STOPPED"
                                    ]
                                  },
                                  "currentBatch": {
                                    "type": "integer",
                                    "example": 1
                                  },
                                  "numOfBatches": {
                                    "type": "integer",
                                    "example": 5
                                  },
                                  "comment": {
                                    "type": "string",
                                    "example": "This is why I deployed my cluster."
                                  },
                                  "batchMinHealthyPercentage": {
                                    "type": "integer",
                                    "example": 100
                                  },
                                  "progress": {
                                    "type": "object",
                                    "properties": {
                                      "unit": {
                                        "type": "string",
                                        "example": "percentage"
                                      },
                                      "value": {
                                        "type": "integer",
                                        "example": 0
                                      },
                                      "detailedStatus": {
                                        "type": "object",
                                        "properties": {
                                          "oldInstances": {
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "instanceId": {
                                                  "type": "string"
                                                },
                                                "status": {
                                                  "type": "string"
                                                }
                                              }
                                            },
                                            "example": [
                                              {
                                                "instanceId": "i-003a0281a24c01a20",
                                                "status": "REPLACED"
                                              },
                                              {
                                                "instanceId": "i-003a0281a24c01a21",
                                                "status": "TO_BE_REPLACED"
                                              },
                                              {
                                                "instanceId": "i-003a0281a24c01a22",
                                                "status": "COULD_NOT_BE_REPLACED"
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "groupId": {
                                    "type": "string",
                                    "example": "sig-43a8a5ee"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2019-03-24T15:46:09.000Z"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "example": "2019-03-24T15:46:09.000Z"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "ECS Get All Cluster Rolls Per Elastigroup",
        "description": "Get status for every ECS cluster rolls in given Elastigroup\n",
        "operationId": "elastigroupAwsEcsGetAllClusterRollsPerElastigroup",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1clusterRoll/put/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/clusterRoll/{rollId}": {
      "get": {
        "summary": "ECS Get Cluster Roll Status by Roll ID",
        "description": "Get status for specific ECS cluster rolls in given Elastigroup\n",
        "operationId": "elastigroupAwsEcsGetClusterRollStatusByRollID",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          },
          {
            "in": "path",
            "name": "rollId",
            "required": true,
            "description": "The cluster roll ID you want to query\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1clusterRoll/put/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/beanstalk/maintenance/start": {
      "put": {
        "summary": "Start Beanstalk Maintenance",
        "description": "Put your Beanstslk Elastigroup into maintenance mode, before you start updating the beanstalk configuration.\n",
        "operationId": "elastigroupAwsStartBeanstalkMaintenance",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "groupId",
            "example": "sig-12345",
            "description": "The Spot Elastigroup ID \n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/beanstalk/maintenance/finish": {
      "put": {
        "summary": "Finish Beanstalk Maintenance",
        "description": "Finish maintenance mode, and trigger a blue-green deployment.\n",
        "operationId": "elastigroupAwsFinishBeanstalkMaintenance",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/beanstalk/maintenance/status": {
      "get": {
        "summary": "Get Beanstalk Maintenance Status",
        "description": "Get the group maintenance status.<ul>\n<li>If the status is ACTIVE: putting the group in maintenance mode is allowed.</li> <li>If the status is AWAIT_USER_UPDATE: the group is pending for manually finishing maintenance mode.</li> <li>If the status is CANCELING_MAINTENANCE_MODE: the group is in the process of canceling maintenance mode.</li> </ul>\n",
        "operationId": "elastigroupAwsBeanstalkGetMaintenance",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "status": {
                                    "type": "string",
                                    "example": "AWAIT_USER_UPDATE"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:beanstalk:status"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/beanstalk/import": {
      "get": {
        "summary": "Get Beanstalk Configuration",
        "description": "<ul> <li>Get your Beanstalk environment configuration from AWS. This call is typically used as the initial step in importing your existing Beanstalk configuration to an Elastigroup.</li> <li> Note: To optimize the availability of your Beanstalk workload on Elastigroup, instance types similar to those running in your existing configuration are automatically added to the response under instanceTypes. Should these instance types not meet your requirements you may remove them.</li> <ul>\n",
        "operationId": "elastigroupAwsGetBeanstalkConfiguration",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "environmentId",
            "example": "e-12345",
            "required": true,
            "description": "The Beanstalk name\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "region",
            "example": "us-east-1",
            "required": true,
            "description": "The AWS region for the Beanstalk\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "required": [
                                  "group"
                                ],
                                "properties": {
                                  "group": {
                                    "type": "object",
                                    "title": "AWS Elastigroup",
                                    "required": [
                                      "name"
                                    ],
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "example": "First Elastigroup",
                                        "description": "The name of the Elastigroup\n"
                                      },
                                      "description": {
                                        "type": "string",
                                        "example": "This is the first Spot Elastigroup of many",
                                        "description": "The detailed purpose for this Elastigroup\n"
                                      },
                                      "capacity": {
                                        "type": "object",
                                        "title": "Capacity Units",
                                        "required": [
                                          "target"
                                        ],
                                        "properties": {
                                          "minimum": {
                                            "type": "integer",
                                            "example": 1,
                                            "description": "The minimum number of units Elastigroup will scale down to        \n"
                                          },
                                          "maximum": {
                                            "type": "integer",
                                            "example": 10,
                                            "description": "The maximum number of units Elastigroup will scale up to\n"
                                          },
                                          "target": {
                                            "type": "integer",
                                            "example": 5,
                                            "description": "Number of units Elastigroup will start with\n"
                                          }
                                        }
                                      },
                                      "strategy": {
                                        "type": "object",
                                        "properties": {
                                          "risk": {
                                            "type": "integer",
                                            "example": 100
                                          }
                                        }
                                      },
                                      "compute": {
                                        "type": "object",
                                        "properties": {
                                          "instanceTypes": {
                                            "type": "object",
                                            "properties": {
                                              "ondemand": {
                                                "type": "string",
                                                "example": "t2.micro"
                                              },
                                              "spot": {
                                                "type": "array",
                                                "items": {
                                                  "type": "string"
                                                }
                                              }
                                            }
                                          },
                                          "availabilityZones": {
                                            "type": "array",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "name": {
                                                  "type": "string",
                                                  "example": "us-west-2a"
                                                }
                                              }
                                            }
                                          },
                                          "launchSpecification": {
                                            "type": "object",
                                            "properties": {
                                              "loadBalancersConfig": {
                                                "type": "object",
                                                "properties": {
                                                  "loadBalancers": {
                                                    "type": "array",
                                                    "items": {
                                                      "anyOf": [
                                                        {
                                                          "type": "object",
                                                          "title": "MULTAI_TARGET_SET",
                                                          "properties": {
                                                            "name": {
                                                              "type": "string",
                                                              "example": "awseb-AWSEB-12345"
                                                            },
                                                            "arn": {
                                                              "type": "string",
                                                              "example": "arn:aws:elasticloadbalancing:us-west-2:842422002533:targetgroup/awseb-AWSEB-12345/245f20215d9ba7fc"
                                                            },
                                                            "type": {
                                                              "type": "string",
                                                              "example": "TARGET_GROUP"
                                                            }
                                                          }
                                                        },
                                                        {
                                                          "type": "object",
                                                          "title": "APPLICATION_GATEWAY",
                                                          "properties": {
                                                            "type": {
                                                              "type": "string",
                                                              "example": "APPLICATION_GATEWAY",
                                                              "enum": [
                                                                "APPLICATION_GATEWAY"
                                                              ]
                                                            },
                                                            "resourceGroupName": {
                                                              "type": "string",
                                                              "example": "azureResourceGroup"
                                                            },
                                                            "applicationGatewayName": {
                                                              "type": "string",
                                                              "example": "appGateway"
                                                            },
                                                            "backendPoolName": {
                                                              "type": "string",
                                                              "example": "backendpool490822"
                                                            }
                                                          }
                                                        }
                                                      ]
                                                    }
                                                  }
                                                }
                                              },
                                              "healthCheckType": {
                                                "type": "string",
                                                "example": "EC2"
                                              },
                                              "securityGroupIds": {
                                                "type": "array",
                                                "items": {
                                                  "type": "string",
                                                  "example": "sg-12345"
                                                }
                                              },
                                              "monitoring": {
                                                "type": "boolean",
                                                "example": true
                                              },
                                              "imageId": {
                                                "type": "string",
                                                "example": "ami-12345"
                                              },
                                              "iamRole": {
                                                "type": "object",
                                                "properties": {
                                                  "name": {
                                                    "type": "string",
                                                    "example": "aws-elasticbeanstalk-ec2-role"
                                                  }
                                                }
                                              },
                                              "userData": {
                                                "type": "string",
                                                "example": "Q29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSI9PT09PT09PT09PT09PT01MTg5MDY1Mzc3MjIyODk4NDA3PT0iCk1JTUUtVmVyc2lvbjogMS4wCgotLT09PT09PT09PT09PT09PTUxODkwNjUzNzcyMjI4OTg0MDc9PQpDb250ZW50LVR5cGU6IHRleHQvY2xvdWQtY29uZmlnOyBjaGFyc2V0PSJ1cy1hc2NpaSIKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdApDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iY2xvdWQtY29uZmlnLnR4dCIKCiNjbG91ZC1jb25maWcKcmVwb191cGdyYWRlOiBub25lCnJlcG9fcmVsZWFzZXZlcjogMjAxNy4wOQpjbG91ZF9maW5hbF9tb2R1bGVzOgogLSBbc2NyaXB0cy11c2VyLCBhbHdheXNdCgotLT09PT09PT09PT09PT09PTUxODkwNjUzNzcyMjI4OTg0MDc9PQpDb250ZW50LVR5cGU6IHRleHQveC1zaGVsbHNjcmlwdDsgY2hhcnNldD0idXMtYXNjaWkiCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9InVzZXItZGF0YS50eHQiCgojIS9iaW4vYmFzaApleGVjID4gPih0ZWUgLWEgL3Zhci9sb2cvZWItY2ZuLWluaXQubG9nfGxvZ2dlciAtdCBbZWItY2ZuLWluaXRdIC1zIDI"
                                              },
                                              "tags": {
                                                "type": "array",
                                                "items": {
                                                  "type": "object",
                                                  "properties": {
                                                    "tagKey": {
                                                      "type": "string",
                                                      "example": "env"
                                                    },
                                                    "tagValue": {
                                                      "type": "string",
                                                      "example": "staging"
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      },
                                      "scaling": {
                                        "type": "object",
                                        "properties": {
                                          "up": {
                                            "type": "array",
                                            "items": {
                                              "allOf": [
                                                {
                                                  "type": "object",
                                                  "properties": {
                                                    "policyName": {
                                                      "type": "string",
                                                      "example": "cpuScale"
                                                    },
                                                    "metricName": {
                                                      "type": "string",
                                                      "example": "NetworkOut"
                                                    },
                                                    "statistic": {
                                                      "type": "string",
                                                      "example": "average",
                                                      "enum": [
                                                        "average",
                                                        "sampleCount",
                                                        "sum",
                                                        "minimum",
                                                        "maximum"
                                                      ]
                                                    },
                                                    "unit": {
                                                      "type": "string",
                                                      "example": "bytes"
                                                    },
                                                    "threshold": {
                                                      "type": "integer",
                                                      "example": 6000000
                                                    },
                                                    "namespace": {
                                                      "type": "string",
                                                      "example": "AWS/EC2"
                                                    },
                                                    "source": {
                                                      "type": "string",
                                                      "example": "cloudWatch"
                                                    },
                                                    "period": {
                                                      "type": "integer",
                                                      "example": 300
                                                    },
                                                    "evaluationPeriods": {
                                                      "type": "integer",
                                                      "example": 1
                                                    },
                                                    "cooldown": {
                                                      "type": "integer",
                                                      "example": 360
                                                    },
                                                    "dimenstions": {
                                                      "type": "array",
                                                      "items": {
                                                        "type": "object",
                                                        "properties": {
                                                          "name": {
                                                            "type": "string",
                                                            "example": "resourceName"
                                                          }
                                                        }
                                                      }
                                                    },
                                                    "action": {
                                                      "type": "object",
                                                      "properties": {
                                                        "type": {
                                                          "type": "string",
                                                          "example": "adjustment"
                                                        },
                                                        "adjustment": {
                                                          "type": "string",
                                                          "example": 1
                                                        }
                                                      }
                                                    },
                                                    "operator": {
                                                      "type": "string",
                                                      "example": "gte",
                                                      "enum": [
                                                        "gt",
                                                        "gte",
                                                        "lt",
                                                        "lte"
                                                      ]
                                                    }
                                                  }
                                                },
                                                {
                                                  "type": "object",
                                                  "properties": {
                                                    "policyName": {
                                                      "example": "awseb-e-12345-stack-AWSEBCloudwatchAlarmHigh-56QPITB3WUFM"
                                                    },
                                                    "threshold": {
                                                      "example": 6000000
                                                    },
                                                    "operator": {
                                                      "example": "gte"
                                                    },
                                                    "action": {
                                                      "type": "object",
                                                      "properties": {
                                                        "type": {
                                                          "type": "string",
                                                          "example": "adjustment",
                                                          "enum": [
                                                            "adjustment",
                                                            "setMinTarget",
                                                            "updateCapacity",
                                                            "percentageAdjustment"
                                                          ]
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              ]
                                            }
                                          },
                                          "down": {
                                            "type": "array",
                                            "items": {
                                              "allOf": [
                                                {
                                                  "$ref": "#/paths/~1aws~1ec2~1group~1beanstalk~1import/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/properties/group/properties/scaling/properties/up/items/allOf/0"
                                                },
                                                {
                                                  "type": "object",
                                                  "properties": {
                                                    "policyName": {
                                                      "example": "awseb-e-12345-stack-AWSEBCloudwatchAlarmLow-UNGVBRKT0EHP"
                                                    },
                                                    "threshold": {
                                                      "example": 2000000
                                                    },
                                                    "operator": {
                                                      "example": "lte"
                                                    },
                                                    "action": {
                                                      "type": "object",
                                                      "properties": {
                                                        "type": {
                                                          "type": "string",
                                                          "example": "adjustment",
                                                          "enum": [
                                                            "adjustment",
                                                            "setMaxTarget",
                                                            "updateCapacity",
                                                            "percentageAdjustment"
                                                          ]
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              ]
                                            }
                                          }
                                        }
                                      },
                                      "thirdPartiesIntegration": {
                                        "type": "object",
                                        "properties": {
                                          "elasticBeanstalk": {
                                            "type": "object",
                                            "properties": {
                                              "environmentId": {
                                                "type": "string",
                                                "example": "e-12345"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:group"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/beanstalk/reimport": {
      "put": {
        "summary": "Beanstalk Reimport",
        "description": "Re-import the beanstalk configuration\n",
        "operationId": "elastigroupAwsBeanstalkReImport",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "group": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "example": "sig-123456"
                                      },
                                      "compute": {
                                        "type": "object",
                                        "properties": {
                                          "launchSpecification": {
                                            "type": "object",
                                            "properties": {
                                              "securityGroupIds": {
                                                "type": "array",
                                                "items": {
                                                  "type": "string",
                                                  "example": "sg-b75343cf"
                                                }
                                              },
                                              "monitoring": {
                                                "type": "boolean",
                                                "example": false
                                              },
                                              "imageId": {
                                                "type": "string",
                                                "example": "ami-3c873e5c"
                                              },
                                              "iamRole": {
                                                "type": "object",
                                                "properties": {
                                                  "name": {
                                                    "type": "string",
                                                    "example": "aws-elasticbeanstalk-ec2-role"
                                                  }
                                                }
                                              },
                                              "userData": {
                                                "type": "string",
                                                "example": "Q29udGVudC1UeXBlOiBtdWx0aXBhcnQvbWl4ZWQ7IGJvdW5kYXJ5PSI9PT09PT09PT09PT09PT01MTg5MDY1Mzc3MjIyODk4NDA3PT0iCk1JTUUtVmVyc2lvbjogMS4wCgotLT09PT09PT09PT09PT09PTUxODkwNjUzNzcyMjI4OTg0MDc9PQpDb250ZW50LVR5cGU6IHRleHQvY2xvdWQtY29uZmlnOyBjaGFyc2V0PSJ1cy1hc2NpaSIKTUlNRS1WZXJzaW9uOiAxLjAKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogN2JpdApDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iY2xvdWQtY29uZmlnLnR4dCIKCiNjbG91ZC1jb25maWcKcmVwb191cGdyYWRlOiBub25lCnJlcG9fcmVsZWFzZXZlcjogMjAxNy4wOQpjbG91ZF9maW5hbF9tb2R1bGVzOgogLSBbc2NyaXB0cy11c2VyLCBhbHdheXNdCgotLT09PT09PT09PT09PT09PTUxODkwNjUzNzcyMjI4OTg0MDc9PQpDb250ZW50LVR5cGU6IHRleHQveC1zaGVsbHNjcmlwdDsgY2hhcnNldD0idXMtYXNjaWkiCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXQKQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9InVzZXItZGF0YS50eHQiCgojIS9iaW4vYmFzaApleGVjID4gPih0ZWUgLWEgL3Zhci9sb2cvZWItY2ZuLWluaXQubG9nfGxvZ2dlciAtdCBbZWItY2ZuLWluaXRdIC1zIDI"
                                              },
                                              "blockDeviceMappings": {
                                                "type": "array",
                                                "items": {
                                                  "type": "object",
                                                  "properties": {
                                                    "deviceName": {
                                                      "type": "string",
                                                      "example": "/dev/xvdcz"
                                                    },
                                                    "ebs": {
                                                      "type": "object",
                                                      "properties": {
                                                        "deleteOnTermination": {
                                                          "type": "boolean",
                                                          "example": true
                                                        },
                                                        "volumeSize": {
                                                          "type": "integer",
                                                          "example": 12
                                                        },
                                                        "volumeType": {
                                                          "type": "string",
                                                          "example": "gp2"
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:group"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/codeDeploy/blueGreenDeployment": {
      "post": {
        "summary": "Create CodeDeploy B/G Deployment",
        "description": "Trigger a Blue-Green deployment to your Elastigroup, this will initiate a deployment that will replace the existing instances(blue) with new ones(green).\n",
        "operationId": "elastigroupAwsCreateCodeDeployB_GDeployment",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1codeDeploy~1blueGreenDeployment/get/requestBody/content/application~1json/schema/allOf/0"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1codeDeploy~1blueGreenDeployment/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get CodeDeploy B/G Deployment",
        "description": "Get CodeDeploy Elastigroup deployment status for more information see: CodeDeploy B/G Deployment\n",
        "operationId": "elastigroupAwsGetCodeDeployB_GDeployment",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "deployment": {
                        "type": "object",
                        "properties": {
                          "timeout": {
                            "type": "integer",
                            "example": 20
                          },
                          "tags": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "tagKey": {
                                  "type": "string",
                                  "example": "ver"
                                },
                                "tagValue": {
                                  "type": "string",
                                  "example": "pink"
                                }
                              }
                            }
                          },
                          "deploymentGroups": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "applicationName": {
                                  "type": "string",
                                  "example": "appTest"
                                },
                                "deploymentGroupName": {
                                  "type": "string",
                                  "example": "deploymentGroupName"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "example": "cdbg-3ccf1234"
                                  },
                                  "groupId": {
                                    "type": "string",
                                    "example": "sig-87231234"
                                  },
                                  "state": {
                                    "type": "string",
                                    "example": "STARTING"
                                  },
                                  "config": {
                                    "type": "object",
                                    "properties": {
                                      "timeout": {
                                        "type": "integer",
                                        "example": 20
                                      },
                                      "tags": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "tagKey": {
                                              "type": "string",
                                              "example": "ver"
                                            },
                                            "tagValue": {
                                              "type": "string",
                                              "example": "pink"
                                            }
                                          }
                                        }
                                      },
                                      "deploymentGroups": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "applicationName": {
                                              "type": "string",
                                              "example": "appTest"
                                            },
                                            "deploymentGroupName": {
                                              "type": "string",
                                              "example": "deploymentGroupName"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:group:codeDeploy:blueGreenDeployment"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/itf/migration": {
      "get": {
        "summary": "List Elastigroup ITF Listener Rule Migrations",
        "description": "Get all ITF listener rule migrations of a specific Elastigroup.\n",
        "operationId": "elastigroupAwsItfListenerRuleMigrationsGet",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/aws/ec2/group/sig-12345/itf/migration?spotinstAccountId=act-123456"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "title": "ITF Listener Rule Migration",
                                "type": "object",
                                "description": "Contains the details of an ITF listener rule migration process.\n",
                                "properties": {
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2020-04-10T21:41:31.000Z"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "example": "2020-05-12T22:37:18.000Z"
                                  },
                                  "id": {
                                    "type": "string",
                                    "example": "ilrm-12345678"
                                  },
                                  "groupId": {
                                    "type": "string",
                                    "title": "Group Id",
                                    "example": "sig-12345"
                                  },
                                  "ruleArn": {
                                    "type": "string",
                                    "example": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/0123456789012345/1234567890123456/234567890123456"
                                  },
                                  "status": {
                                    "type": "string",
                                    "enum": [
                                      "Starting",
                                      "In progress",
                                      "Finished",
                                      "Failed"
                                    ],
                                    "example": "Starting"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:group:itf:migration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/group/{groupId}/itf/migration/{migrationId}": {
      "put": {
        "summary": "Update ITF Listener Rule Migration",
        "description": "Update an ITF listener rule migration object of a specific Elastigroup.\n",
        "operationId": "elastigroupAwsItfListenerRuleMigrationUpdate",
        "tags": [
          "Elastigroup AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D/put/parameters/0"
          },
          {
            "in": "path",
            "name": "migrationId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "The ID of the ITF listener rule migration to be updated.\n",
            "example": "ilrm-12345678"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "title": "ITF Listener Rule Migration Update Request",
                    "type": "object",
                    "description": "A request to update the status of an ITF listener rule migration process. Only 'USER_RETRY' is supported, allowing to retry a previously failed migration process (having a \"Failed\" status).\n",
                    "properties": {
                      "status": {
                        "type": "string",
                        "description": "The status to be updated. Valid value is \"USER_RETRY\".",
                        "enum": [
                          "USER_RETRY"
                        ],
                        "example": "USER_RETRY"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/aws/ec2/group/sig-12345/itf/migration/ilrm-12345678?spotinstAccountId=act-123456"
                            },
                            "method": {
                              "example": "UPDATE"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1aws~1ec2~1group~1%7BgroupId%7D~1itf~1migration/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:group:itf:migration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster": {
      "summary": "Ocean for AWS",
      "post": {
        "summary": "Create Cluster",
        "description": "**Prerequisites**\n\nThe Ocean Controller is used to monitor the cluster resources and report back to Ocean. The Ocean Controller is required for Ocean Cloud.<br />\n\nTo install the Ocean Controller, complete and run the following script on a machine with the kubectl command line tool installed and configured:\n\n```\n#!/usr/bin/env bash\ncurl -fsSL http://spotinst-public.s3.amazonaws.com/integrations/kubernetes/cluster-controller/scripts/init.sh | \\\nSPOTINST_TOKEN=<ENTER YOUR TOKEN HERE> \\\nSPOTINST_ACCOUNT=<ENTER YOUR SPOTINST ACCOUNT ID HERE> \\\nSPOTINST_CLUSTER_IDENTIFIER=<ENTER YOUR CLUSTER IDENTIFIER HERE> \\\nbash\n```\n",
        "operationId": "OceanAWSClusterCreate",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "cluster"
                    ],
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "description": "The object specifying the configuration of the Ocean cluster.\n",
                        "title": "AWS Cluster",
                        "required": [
                          "name",
                          "region",
                          "controllerClusterId",
                          "compute"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "readOnly": true,
                            "description": "The Ocean cluster identifier.\n",
                            "example": "o-abcd1234"
                          },
                          "name": {
                            "type": "string",
                            "example": "oceanName",
                            "description": "Add a name for the Ocean cluster.\n"
                          },
                          "controllerClusterId": {
                            "type": "string",
                            "example": "ocean.k8s",
                            "description": "Enter the reporting identifier for the Ocean Controller.\n"
                          },
                          "region": {
                            "type": "string",
                            "example": "us-east-1",
                            "description": "Select the region for the Ocean cluster to run in.\n"
                          },
                          "autoScaler": {
                            "type": "object",
                            "title": "auto-scaler",
                            "description": "The automatic scaling mechanism used in Ocean for Kubernetes.",
                            "properties": {
                              "isEnabled": {
                                "type": "boolean",
                                "description": "Enable the Ocean Kubernetes autoscaler.",
                                "default": true,
                                "example": true
                              },
                              "cooldown": {
                                "type": "integer",
                                "description": "A period of time (in seconds) that Ocean waits from the end of a scaling action until starting another scaling action.",
                                "default": null,
                                "example": 180
                              },
                              "resourceLimits": {
                                "type": "object",
                                "description": "Option to set upper and lower bounds on the resource usage of the cluster.",
                                "properties": {
                                  "maxMemoryGib": {
                                    "type": "integer",
                                    "description": "The maximum memory (in GiB) that can be allocated to the cluster.",
                                    "example": 1500
                                  },
                                  "maxVCpu": {
                                    "type": "integer",
                                    "description": "The maximum CPU (in vCPU units) that can be allocated to the cluster.",
                                    "example": 750
                                  }
                                }
                              },
                              "down": {
                                "type": "object",
                                "description": "Autoscaling scale down operations.",
                                "properties": {
                                  "evaluationPeriods": {
                                    "type": "integer",
                                    "deprecated": true,
                                    "description": "Deprecated — no longer used.\n"
                                  },
                                  "maxScaleDownPercentage": {
                                    "type": "integer",
                                    "description": "Represents the maximum percent of your instances to scale down in a single scale-down action. Number between 1-100.",
                                    "example": 60
                                  },
                                  "aggressiveScaleDown": {
                                    "type": "object",
                                    "description": "Enable and configure the Accelerated Scale Down feature to allow the Ocean autoscaler to immediately scale down eligible nodes without any waiting period.",
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "description": "When set to 'true', Accelerated Scale Down is enabled.",
                                        "default": false
                                      }
                                    }
                                  }
                                }
                              },
                              "headroom": {
                                "type": "object",
                                "description": "Spare resource capacity management enabling fast assignment of pods without waiting for new resources to launch.",
                                "properties": {
                                  "cpuPerUnit": {
                                    "type": "integer",
                                    "description": "Option to configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.",
                                    "example": 2000
                                  },
                                  "memoryPerUnit": {
                                    "type": "integer",
                                    "description": "Option to configure the amount of memory (MiB) to allocate the headroom.",
                                    "example": 0
                                  },
                                  "gpuPerUnit": {
                                    "type": "integer",
                                    "description": "Amount of GPU to allocate for headroom.",
                                    "example": 0
                                  },
                                  "numOfUnits": {
                                    "type": "integer",
                                    "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.",
                                    "example": 4
                                  }
                                }
                              },
                              "isAutoConfig": {
                                "type": "boolean",
                                "description": "Use automatic headroom. When set to true, the values under cluster.autoScaler.headroom are not effective, as Ocean configures and optimizes headroom automatically.",
                                "default": true,
                                "example": false
                              },
                              "autoHeadroomPercentage": {
                                "type": "integer",
                                "description": "Dynamic (automatic) buffer of spare capacity, i.e., vCPU, memory, and GPU resources. Expressed as a percent of the overall cluster capacity with valid values from 0-200. Optional. Relevant when isAutoConfig=true.",
                                "example": null
                              },
                              "enableAutomaticAndManualHeadroom": {
                                "type": "boolean",
                                "description": "When set to true, both automatic and per-VNG manual headroom to be saved concurrently and independently in the cluster. prerequisite: isAutoConfig must be true\n",
                                "example": true
                              },
                              "extendedResourceDefinitions": {
                                "type": "array",
                                "description": "List of Ocean extended resource definitions to use in this cluster.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "erd-123",
                                  "erd-456"
                                ]
                              }
                            }
                          },
                          "capacity": {
                            "type": "object",
                            "title": "Capacity Units",
                            "description": "The overall capability of the Ocean cluster expressed as number of instances and specified with a minimum, a maximum, and a target number of running instances.",
                            "properties": {
                              "minimum": {
                                "type": "integer",
                                "example": 0,
                                "description": "The lower limit of instances that the cluster can scale down to.\n"
                              },
                              "maximum": {
                                "type": "integer",
                                "default": 1000,
                                "example": 1000,
                                "description": "The upper limit of instances that the cluster can scale up to.\n"
                              },
                              "target": {
                                "type": "integer",
                                "example": 1,
                                "description": "Number of instances to launch and maintain in the cluster.\n"
                              }
                            }
                          },
                          "strategy": {
                            "type": "object",
                            "title": "Ocean Cluster Strategy",
                            "description": "An object defining the cluster strategy with regard to waiting periods and utilization of on-demand and reserved instances.\n",
                            "properties": {
                              "utilizeReservedInstances": {
                                "type": "boolean",
                                "default": true,
                                "example": true,
                                "description": "If reserved instances exist, Ocean will utilize them before launching spot instances.\n"
                              },
                              "fallbackToOd": {
                                "type": "boolean",
                                "default": true,
                                "example": true,
                                "description": "If no spot instance markets are available, enable Ocean to launch on-demand instances instead.\n"
                              },
                              "spotPercentage": {
                                "type": "integer",
                                "default": 100,
                                "minimum": 0,
                                "maximum": 100,
                                "description": "The desired percentage of Spot instances out of all running instances.\\\nOnly available when the field is **not** set in any VNG directly (launchSpec.strategy.spotPercentage).\n",
                                "example": 100
                              },
                              "maxReplacementLimitPercentage": {
                                "type": "integer",
                                "default": 10,
                                "minimum": 1,
                                "maximum": 100,
                                "description": "Limits the percentage of instances that can be replaced at once during a run cycle.\n",
                                "example": 25
                              },
                              "gracePeriod": {
                                "type": "integer",
                                "default": 300,
                                "example": 300,
                                "description": "The amount of time, in seconds, from the time the instance has launched to the time its first health check starts.\n"
                              },
                              "drainingTimeout": {
                                "type": "integer",
                                "example": 60,
                                "description": "The configurable amount of time that Ocean will wait for the draining process to complete before terminating an instance. If you have not defined a draining timeout, the default of 300 seconds will be used.\n"
                              },
                              "utilizeCommitments": {
                                "type": "boolean",
                                "description": "If savings plans commitment has available capacity, Ocean will utilize them alongside RIs (if exist) to maximize cost efficiency.\n",
                                "example": false,
                                "default": false
                              },
                              "clusterOrientation": {
                                "type": "object",
                                "properties": {
                                  "availabilityVsCost": {
                                    "type": "string",
                                    "description": "You can control the approach that Ocean takes while launching nodes by configuring this value.\n",
                                    "enum": [
                                      "costOriented",
                                      "balanced",
                                      "cheapest"
                                    ],
                                    "example": "balanced",
                                    "default": "balanced"
                                  }
                                }
                              },
                              "spreadNodesBy": {
                                "type": "string",
                                "description": "Ocean will spread the nodes across markets by this value.\n",
                                "enum": [
                                  "vcpu",
                                  "count"
                                ],
                                "example": "count",
                                "default": "count"
                              }
                            }
                          },
                          "scheduling": {
                            "type": "object",
                            "description": "An object used to define times for a task such as a shutdown to be activated.\n",
                            "title": "Elastigroup Scheduling",
                            "properties": {
                              "tasks": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "title": "Task Definition",
                                  "required": [
                                    "isEnabled",
                                    "taskType",
                                    "parameters"
                                  ],
                                  "properties": {
                                    "isEnabled": {
                                      "type": "boolean",
                                      "example": true,
                                      "description": "Describes whether the task is enabled. When True, the task runs. When False, it does not run. Required for cluster.scheduling.tasks.\n"
                                    },
                                    "cronExpression": {
                                      "type": "string",
                                      "example": "0 1 * * *",
                                      "description": "A valid cron expression. For example : \" * * * * * \". The cron job runs in UTC time and is in Unix cron format (See the Cron Expression Validator Script). Required field for taskType \"clusterRoll\", optional field for taskType \"amiAutoUpdate\" (if Cron Expression is not provided for amiAutoUpdate task, the task will run once a day).\n"
                                    },
                                    "taskType": {
                                      "type": "string",
                                      "example": "clusterRoll",
                                      "enum": [
                                        "clusterRoll",
                                        "amiAutoUpdate"
                                      ],
                                      "description": "The activity that you are scheduling. Valid values: \"clusterRoll\", \"amiAutoUpdate\". Required for cluster.scheduling.tasks.\n"
                                    },
                                    "parameters": {
                                      "type": "object",
                                      "description": "This field will be compatible to the task type field. \nIf taskType is defined as \"clusterRoll\", use cluster roll object in parameters.\n",
                                      "properties": {
                                        "clusterRoll": {
                                          "type": "object",
                                          "properties": {
                                            "batchSizePercentage": {
                                              "type": "integer",
                                              "minimum": 0,
                                              "maximum": 100,
                                              "example": 20,
                                              "description": "Value as a percent to set the size of a batch in a roll. Valid values are 0-100.\n"
                                            },
                                            "comment": {
                                              "type": "string",
                                              "example": "This is why I deployed my cluster.",
                                              "description": "Add a comment description for the roll. The comment is limited to 256 chars\n"
                                            },
                                            "batchMinHealthyPercentage": {
                                              "type": "integer",
                                              "minimum": 1,
                                              "maximum": 100,
                                              "default": 50,
                                              "example": 100,
                                              "description": "Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"
                                            },
                                            "respectPdb": {
                                              "type": "boolean",
                                              "description": "During the roll, if the parameter is set to true we honor PDB during the instance replacement.\n",
                                              "example": true,
                                              "default": false
                                            }
                                          }
                                        },
                                        "amiAutoUpdate": {
                                          "type": "object",
                                          "properties": {
                                            "patch": {
                                              "type": "boolean",
                                              "description": "When set to 'true', the auto-update process will update the VNGs’ images with the latest security patches. either \"patch\" or \"minorVersion\" must be true.\n",
                                              "example": true,
                                              "default": false
                                            },
                                            "minorVersion": {
                                              "type": "boolean",
                                              "example": true,
                                              "default": false,
                                              "description": "When set to 'true', the auto-update process will update the VNGs’ AMI with the AMI to match the Kubernetes control plane version. either \"patch\" or \"minorVersion\" must be true.\n"
                                            },
                                            "applyRoll": {
                                              "type": "boolean",
                                              "example": true,
                                              "default": false,
                                              "description": "This parameter is optional. When the AMI is updated according to the configuration set, a cluster roll can be triggered.\n"
                                            },
                                            "clusterRoll": {
                                              "type": "object",
                                              "properties": {
                                                "batchSizePercentage": {
                                                  "type": "integer",
                                                  "minimum": 0,
                                                  "maximum": 100,
                                                  "example": 20,
                                                  "description": "Value as a percent to set the size of a batch in a roll. Valid values are 0-100.\n"
                                                },
                                                "comment": {
                                                  "type": "string",
                                                  "example": "This is why I deployed my cluster.",
                                                  "description": "Add a comment description for the roll. The comment is limited to 256 chars\n"
                                                },
                                                "batchMinHealthyPercentage": {
                                                  "type": "integer",
                                                  "minimum": 1,
                                                  "maximum": 100,
                                                  "default": 50,
                                                  "example": 100,
                                                  "description": "Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"
                                                },
                                                "respectPdb": {
                                                  "type": "boolean",
                                                  "description": "During the roll, if the parameter is set to true we honor PDB during the instance replacement.\n",
                                                  "example": true,
                                                  "default": false
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "shutdownHours": {
                                "type": "object",
                                "description": "An object used to specify times that the nodes in the cluster will be taken down.\n",
                                "title": "Shutdown Hours",
                                "required": [
                                  "timeWindows"
                                ],
                                "properties": {
                                  "timeWindows": {
                                    "type": "array",
                                    "description": "The times that the shutdown hours will apply.\n",
                                    "items": {
                                      "type": "string",
                                      "example": "Sat:08:00-Sun:08:00"
                                    }
                                  },
                                  "isEnabled": {
                                    "type": "boolean",
                                    "example": true,
                                    "description": "Flag to enable or disable the shutdown hours mechanism. When False, the mechanism is deactivated, and the cluster remains in its current state.\n"
                                  }
                                }
                              },
                              "optimizationWindows": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec/properties/scheduling/properties/optimizationWindows"
                              }
                            }
                          },
                          "security": {
                            "type": "object",
                            "title": "Security",
                            "description": "Object for cluster security features.\n",
                            "properties": {
                              "containerImage": {
                                "type": "object",
                                "properties": {
                                  "approvedImages": {
                                    "type": "array",
                                    "description": "Set a permitted list of repositories for container images.",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "*.ecr.*.amazonaws.com/*",
                                        "docker.*"
                                      ]
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "compute": {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1import/post/responses/200/content/application~1json/schema/properties/items/properties/compute"
                          },
                          "logging": {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/logging"
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2021-03-17T08:13:08.000Z",
                            "description": "A timestamp of the cluster creation.\n"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2021-03-17T15:06:13.000Z",
                            "description": "A timestamp of the latest cluster update.\n"
                          }
                        }
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "required": [
                          "name"
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Clusters",
        "description": "List the configurations for all Ocean clusters in the specified account.\n",
        "operationId": "OceanAWSClusterList",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}": {
      "delete": {
        "summary": "Delete Cluster",
        "description": "Delete an existing Ocean cluster.\n",
        "operationId": "OceanAWSClusterDelete",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AWS Delete Cluster Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster/o-abcd1234"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Cluster",
        "description": "Get the configuration of an existing Ocean cluster.\n",
        "operationId": "OceanAWSClusterGet",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "oceanClusterId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "o-abcd1234",
            "description": "Identifier of the Ocean cluster.\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster/o-abcd1234"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Cluster",
        "description": "All Ocean parameters are updatable, except for region and identifier. This API supports partial updates, so specific fields can be updated separately.\n",
        "operationId": "OceanAWSClusterUpdate",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "autoApplyTags",
            "example": "true",
            "description": "Option to update instance tags on the fly without rolling the cluster.\n",
            "schema": {
              "type": "string",
              "default": "false"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "cluster"
                    ],
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "description": "The object specifying the configuration of the Ocean cluster.\n",
                        "title": "AWS Cluster",
                        "properties": {
                          "id": {
                            "type": "string",
                            "readOnly": true,
                            "description": "The Ocean cluster identifier.\n",
                            "example": "o-abcd1234"
                          },
                          "name": {
                            "type": "string",
                            "example": "oceanName",
                            "description": "Add a name for the Ocean cluster.\n"
                          },
                          "controllerClusterId": {
                            "type": "string",
                            "example": "ocean.k8s",
                            "description": "Enter the reporting identifier for the Ocean Controller.\n"
                          },
                          "region": {
                            "type": "string",
                            "example": "us-east-1",
                            "description": "Select the region for the Ocean cluster to run in.\n"
                          },
                          "autoScaler": {
                            "type": "object",
                            "title": "auto-scaler",
                            "description": "The automatic scaling mechanism used in Ocean for Kubernetes.",
                            "properties": {
                              "isEnabled": {
                                "type": "boolean",
                                "description": "Enable the Ocean Kubernetes autoscaler.",
                                "default": true,
                                "example": true
                              },
                              "cooldown": {
                                "type": "integer",
                                "description": "A period of time (in seconds) that Ocean waits from the end of a scaling action until starting another scaling action.",
                                "default": null,
                                "example": 180
                              },
                              "resourceLimits": {
                                "type": "object",
                                "description": "Option to set upper and lower bounds on the resource usage of the cluster.",
                                "properties": {
                                  "maxMemoryGib": {
                                    "type": "integer",
                                    "description": "The maximum memory (in GiB) that can be allocated to the cluster.",
                                    "example": 1500
                                  },
                                  "maxVCpu": {
                                    "type": "integer",
                                    "description": "The maximum CPU (in vCPU units) that can be allocated to the cluster.",
                                    "example": 750
                                  }
                                }
                              },
                              "down": {
                                "type": "object",
                                "description": "Autoscaling scale down operations.",
                                "properties": {
                                  "evaluationPeriods": {
                                    "type": "integer",
                                    "deprecated": true,
                                    "description": "Deprecated — no longer used.\n"
                                  },
                                  "maxScaleDownPercentage": {
                                    "type": "integer",
                                    "description": "Represents the maximum percent of your instances to scale down in a single scale-down action. Number between 1-100.",
                                    "example": 60
                                  },
                                  "aggressiveScaleDown": {
                                    "type": "object",
                                    "description": "Enable and configure the Accelerated Scale Down feature to allow the Ocean autoscaler to immediately scale down eligible nodes without any waiting period.",
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "description": "When set to 'true', Accelerated Scale Down is enabled.",
                                        "default": false
                                      }
                                    }
                                  }
                                }
                              },
                              "headroom": {
                                "type": "object",
                                "description": "Spare resource capacity management enabling fast assignment of pods without waiting for new resources to launch.",
                                "properties": {
                                  "cpuPerUnit": {
                                    "type": "integer",
                                    "description": "Option to configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.",
                                    "example": 2000
                                  },
                                  "memoryPerUnit": {
                                    "type": "integer",
                                    "description": "Option to configure the amount of memory (MiB) to allocate the headroom.",
                                    "example": 0
                                  },
                                  "gpuPerUnit": {
                                    "type": "integer",
                                    "description": "Amount of GPU to allocate for headroom.",
                                    "example": 0
                                  },
                                  "numOfUnits": {
                                    "type": "integer",
                                    "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.",
                                    "example": 4
                                  }
                                }
                              },
                              "isAutoConfig": {
                                "type": "boolean",
                                "description": "Use automatic headroom. When set to true, the values under cluster.autoScaler.headroom are not effective, as Ocean configures and optimizes headroom automatically.",
                                "default": true,
                                "example": false
                              },
                              "autoHeadroomPercentage": {
                                "type": "integer",
                                "description": "Dynamic (automatic) buffer of spare capacity, i.e., vCPU, memory, and GPU resources. Expressed as a percent of the overall cluster capacity with valid values from 0-200. Optional. Relevant when isAutoConfig=true.",
                                "example": null
                              },
                              "enableAutomaticAndManualHeadroom": {
                                "type": "boolean",
                                "description": "When set to true, both automatic and per-VNG manual headroom to be saved concurrently and independently in the cluster. prerequisite: isAutoConfig must be true\n",
                                "example": true
                              },
                              "extendedResourceDefinitions": {
                                "type": "array",
                                "description": "List of Ocean extended resource definitions to use in this cluster.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "erd-123",
                                  "erd-456"
                                ]
                              }
                            }
                          },
                          "capacity": {
                            "type": "object",
                            "title": "Capacity Units",
                            "description": "The overall capability of the Ocean cluster expressed as number of instances and specified with a minimum, a maximum, and a target number of running instances.",
                            "properties": {
                              "minimum": {
                                "type": "integer",
                                "example": 0,
                                "description": "The lower limit of instances that the cluster can scale down to.\n"
                              },
                              "maximum": {
                                "type": "integer",
                                "default": 1000,
                                "example": 1000,
                                "description": "The upper limit of instances that the cluster can scale up to.\n"
                              },
                              "target": {
                                "type": "integer",
                                "example": 1,
                                "description": "Number of instances to launch and maintain in the cluster.\n"
                              }
                            }
                          },
                          "strategy": {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/strategy"
                          },
                          "scheduling": {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/scheduling"
                          },
                          "security": {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/security"
                          },
                          "compute": {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1import/post/responses/200/content/application~1json/schema/properties/items/properties/compute"
                          },
                          "logging": {
                            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/logging"
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2021-03-17T08:13:08.000Z",
                            "description": "A timestamp of the cluster creation.\n"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2021-03-17T15:06:13.000Z",
                            "description": "A timestamp of the latest cluster update.\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster/o-abcd1234"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/k8s/cluster/{oceanClusterId}/controllerHeartbeat": {
      "get": {
        "summary": "Get Heartbeat Status",
        "description": "Get the heartbeat status of the Ocean Controller for the cluster. <br /> The response returns the heartbeat status and the last heartbeat timestamp.\n",
        "operationId": "oceanAwsGetHeartbeatStatus",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Get Heartbeat Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/k8s/cluster/o-e0a2bd7c/controllerHeartbeat"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Controller Heartbeat",
                                "properties": {
                                  "status": {
                                    "type": "string",
                                    "example": "ACTIVE"
                                  },
                                  "lastHeartbeat": {
                                    "type": "string",
                                    "example": "2019-11-24T14:33:00.746Z"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:k8s:cluster:controllerHeartbeat"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{clusterIdentifier}/log": {
      "summary": "Ocean for AWS K8s",
      "get": {
        "summary": "Fetch Elastilog",
        "description": "Fetch the log of an Ocean cluster.\n",
        "operationId": "oceanAwsFetchLog",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "clusterIdentifier",
            "example": "o-6e3819ae",
            "description": "The reporting identifier of the Ocean Controller.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1mcs~1ecs~1cluster~1%7BclusterName%7D~1costs/get/parameters/2"
          },
          {
            "$ref": "#/paths/~1mcs~1ecs~1cluster~1%7BclusterName%7D~1costs/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1log/get/parameters/4"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1log/get/parameters/5"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1log/get/parameters/6"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Get Log Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "request": {
                      "type": "object",
                      "description": "Original request properties\n",
                      "properties": {
                        "id": {
                          "type": "string",
                          "example": "3213f42e-455e-4801-a185-cd3eb65fac5f",
                          "description": "Unique identifier associated with this request\n"
                        },
                        "url": {
                          "type": "string",
                          "example": "/ocean/aws/k8s/cluster/o-e0a2bd7c/log?fromDate=2020-10-06&toDate=2020-10-08&severity=ALL&limit=500",
                          "description": "The URL that was used for the request\n"
                        },
                        "method": {
                          "type": "string",
                          "example": "GET",
                          "description": "The HTTP **METHOD** used for the request\n"
                        },
                        "timestamp": {
                          "type": "string",
                          "example": "2020-10-05T16:20:38.579Z",
                          "description": "When the request was received by Spot\n"
                        }
                      }
                    },
                    "response": {
                      "type": "object",
                      "description": "Response payload that includes status, type, and any relevant data.\n",
                      "properties": {
                        "status": {
                          "type": "object",
                          "properties": {
                            "code": {
                              "type": "integer",
                              "example": "200",
                              "description": "HTTP status code assigned to this response.\n"
                            },
                            "message": {
                              "type": "string",
                              "example": "OK",
                              "description": "HTTP status message for the respective status code.\n"
                            }
                          }
                        },
                        "kind": {
                          "type": "string",
                          "example": "spotinst:ocean:cluster:log"
                        },
                        "items": {
                          "type": "array",
                          "description": "Array of data objects\n",
                          "items": {
                            "type": "object",
                            "properties": {
                              "message": {
                                "type": "string"
                              },
                              "severity": {
                                "type": "string"
                              },
                              "createdAt": {
                                "type": "string"
                              }
                            }
                          },
                          "example": [
                            {
                              "message": "Ocean o-e0a2bd7c successfully created.",
                              "severity": "INFO",
                              "createdAt": "2020-10-07T09:51:12.000Z"
                            }
                          ]
                        },
                        "count": {
                          "type": "integer",
                          "example": "1"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/autoScalingGroup/import": {
      "post": {
        "summary": "Import ASG To Ocean Cluster",
        "description": "Create an Ocean configuration according to an AWS autoscaling group (ASG) configuration.\n",
        "operationId": "oceanAwsImportAsg",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "autoScalingGroupName",
            "example": "myAutoScalingGroup",
            "description": "The ASG name.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "region",
            "example": "us-east-1",
            "description": "Region name of the ASG.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "description": "The object specifying the configuration of the VNG.\n",
                        "properties": {
                          "instanceTypes": {
                            "type": "array",
                            "description": "List of possible instance types for the cluster.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "c3.large",
                              "m4.large"
                            ]
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Import ASG to Ocean Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster/autoScalingGroup/import"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "Ocean Import ASG Response.\n",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "example": "TestASG1"
                                  },
                                  "controllerClusterId": {
                                    "type": "string",
                                    "example": "ocean-ed609402-8557-4d18-818a-e549333cc11e"
                                  },
                                  "region": {
                                    "type": "string",
                                    "example": "us-west-2"
                                  },
                                  "capacity": {
                                    "type": "object",
                                    "properties": {
                                      "minimum": {
                                        "type": "integer",
                                        "example": 0
                                      },
                                      "maximum": {
                                        "type": "integer",
                                        "example": 1000
                                      },
                                      "target": {
                                        "type": "integer",
                                        "example": 1
                                      }
                                    }
                                  },
                                  "compute": {
                                    "type": "object",
                                    "properties": {
                                      "subnetIds": {
                                        "type": "array",
                                        "items": {
                                          "type": "string",
                                          "example": [
                                            "subnet-00cab2dd9f40a9883",
                                            "subnet-0df9d512c7cbbd9e1"
                                          ]
                                        }
                                      },
                                      "launchSpecification": {
                                        "type": "object",
                                        "properties": {
                                          "securityGroupIds": {
                                            "type": "array",
                                            "items": {
                                              "type": "string",
                                              "example": [
                                                "sg-03ccf232a2bf0f4ea"
                                              ]
                                            }
                                          },
                                          "keyPair": {
                                            "type": "string",
                                            "example": "testteamkp"
                                          },
                                          "imageId": {
                                            "type": "string",
                                            "example": "ami-0ce21b51cb31a54b8"
                                          },
                                          "tags": {
                                            "type": "object",
                                            "properties": {
                                              "tagKey": {
                                                "type": "string",
                                                "example": "AmazonECSManaged"
                                              },
                                              "tagValue": {
                                                "type": "string",
                                                "example": ""
                                              }
                                            }
                                          },
                                          "associatePublicIpAddress": {
                                            "type": "boolean",
                                            "example": "false"
                                          },
                                          "instanceMetadataOptions": {
                                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1import/post/responses/200/content/application~1json/schema/properties/items/properties/compute/properties/launchSpecification/properties/instanceMetadataOptions"
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/instanceTypeFiltersSimulation": {
      "post": {
        "summary": "Instance Types Filters Simulation",
        "description": "Returns all instances types that match the given filters. These instance types will be used if the cluster is configured with these filters.\n",
        "operationId": "oceanAwsInstanceTypeFiltersSimulation",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "filters"
                    ],
                    "properties": {
                      "filters": {
                        "type": "object",
                        "description": "List of filters. The Instance types that match with all filters compose the Ocean's whitelist parameter.  Cannot be configured together with whitelist/blacklist.\n",
                        "title": "InstanceTypesFilters",
                        "properties": {
                          "minVcpu": {
                            "type": "integer",
                            "description": "Minimum number of vcpus available.\n",
                            "minimum": 0,
                            "example": 2
                          },
                          "maxVcpu": {
                            "type": "integer",
                            "description": "Maximum number of vcpus available.\n",
                            "minimum": 1,
                            "example": 16
                          },
                          "minMemoryGiB": {
                            "type": "number",
                            "format": "double",
                            "description": "Minimum amount of Memory (GiB).\n",
                            "minimum": 0,
                            "example": 8
                          },
                          "maxMemoryGiB": {
                            "type": "number",
                            "format": "double",
                            "description": "Maximum amount of Memory (GiB).\n",
                            "minimum": 0,
                            "example": 16
                          },
                          "minGpu": {
                            "type": "integer",
                            "description": "Minimum total number of GPUs.\n",
                            "minimum": 0,
                            "example": 0
                          },
                          "maxGpu": {
                            "type": "integer",
                            "description": "Maximum total number of GPUs.\n",
                            "minimum": 1,
                            "example": 4
                          },
                          "includeFamilies": {
                            "type": "array",
                            "description": "Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported). For example, C* will include instance types from these families: c5, c4, c4a, etc.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "c5*",
                              "g5"
                            ]
                          },
                          "excludeFamilies": {
                            "type": "array",
                            "description": "Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported). For example, C* will exclude instance types from these families: c5, c4, c4a, etc.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "t2",
                              "R4*"
                            ]
                          },
                          "excludeMetal": {
                            "type": "boolean",
                            "default": false,
                            "description": "In case excludeMetal is set to true, metal types will not be available for scaling.\n",
                            "example": true
                          },
                          "isEnaSupported": {
                            "type": "boolean",
                            "description": "Ena is supported or not.\n",
                            "example": true
                          },
                          "architectures": {
                            "type": "array",
                            "description": "The filtered instance types will support at least one of the architectures from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "i386",
                                "x86_64",
                                "arm64"
                              ]
                            },
                            "example": [
                              "i386",
                              "x86_64"
                            ]
                          },
                          "virtualizationTypes": {
                            "type": "array",
                            "description": "The filtered instance types will support at least one of the virtualization types from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "hvm",
                                "paravirtual"
                              ]
                            },
                            "example": [
                              "hvm"
                            ]
                          },
                          "categories": {
                            "type": "array",
                            "description": "The filtered instance types will belong to one of the categories types from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "Accelerated_computing",
                                "Compute_optimized",
                                "General_purpose",
                                "Memory_optimized",
                                "Storage_optimized"
                              ]
                            },
                            "example": [
                              "Accelerated_computing",
                              "Compute_optimized"
                            ]
                          },
                          "minEnis": {
                            "type": "integer",
                            "description": "Minimum number of network interfaces (ENIs).\n",
                            "minimum": 0,
                            "example": 2
                          },
                          "diskTypes": {
                            "type": "array",
                            "description": "The filtered instance types will have one of the disk type from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "NVMe",
                                "EBS",
                                "SSD",
                                "HDD"
                              ]
                            },
                            "example": [
                              "NVMe",
                              "EBS"
                            ]
                          },
                          "hypervisor": {
                            "type": "array",
                            "description": "The filtered instance types will have a hypervisor type from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "nitro",
                                "xen"
                              ]
                            },
                            "example": [
                              "nitro"
                            ]
                          },
                          "rootDeviceTypes": {
                            "type": "array",
                            "description": "The filtered instance types will have a root device types from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "ebs",
                                "instance-store"
                              ]
                            },
                            "example": [
                              "ebs"
                            ]
                          },
                          "minNetworkPerformance": {
                            "type": "integer",
                            "description": "Minimum Bandwidth in Gib/s of network performance.\n",
                            "minimum": 0,
                            "example": 2
                          },
                          "maxNetworkPerformance": {
                            "type": "integer",
                            "description": "Maximum Bandwidth in Gib/s of network performance.\n",
                            "minimum": 1,
                            "example": 20
                          },
                          "minInstancePrice": {
                            "type": "number",
                            "format": "double",
                            "description": "Minimum Price of On-Demand instance type.\n",
                            "minimum": 0,
                            "example": 2
                          },
                          "maxInstancePrice": {
                            "type": "number",
                            "format": "double",
                            "description": "Maximum Price of On-Demand instance type.\n",
                            "exclusiveMinimum": true,
                            "minimum": 0,
                            "example": 20
                          },
                          "includeGenerations": {
                            "type": "array",
                            "description": "Types belonging to a Generation from the IncludeGenerations will be available for scaling.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "6",
                              "7"
                            ]
                          },
                          "excludeGenerations": {
                            "type": "array",
                            "description": "Types Not belonging to a Generation from the ExcludeGenerations will be available for scaling.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "1",
                              "2"
                            ]
                          },
                          "encryptionInTransitSupported": {
                            "type": "boolean",
                            "description": "encryptionInTransitSupported is supported or not.\n",
                            "example": true
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Instance Types Filters Simulation Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster/o-abcd1234/instanceTypeFiltersSimulation"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "filteredInstanceTypes": {
                                    "type": "array",
                                    "description": "The simulated instance types.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "g5.xlarge",
                                      "c5.2xlarge",
                                      "c5ad.2xlarge",
                                      "c5d.2xlarge",
                                      "c5a.2xlarge"
                                    ]
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:instanceTypesFilters:simulation"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/allowedInstanceTypes": {
      "get": {
        "summary": "Allowed Instance Types",
        "description": "Return the list of the allowed Ocean cluster instance types.\n",
        "operationId": "oceanAwsGetAllowedInstanceTypes",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Allowed Instance Types Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster/o-12345abc/allowedInstanceTypes"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "instanceTypes": {
                                    "type": "array",
                                    "description": "The allowed Ocean cluster instance types.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "c3.large",
                                      "c5.large"
                                    ]
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:allowedInstanceTypes"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/loadBalancer/attach": {
      "put": {
        "summary": "Attach Load Balancers",
        "description": "Add new load balancers to the existing load balancers on the Ocean Cluster.\n",
        "operationId": "OceanAWSClusterAttachLb",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "loadBalancers"
                ],
                "properties": {
                  "loadBalancers": {
                    "type": "array",
                    "description": "Load balancers to add to the Ocean cluster.\n",
                    "items": {
                      "type": "object",
                      "required": [
                        "type"
                      ],
                      "properties": {
                        "type": {
                          "type": "string",
                          "description": "Type of load balancer to use.\n",
                          "enum": [
                            "CLASSIC",
                            "TARGET_GROUP"
                          ]
                        },
                        "name": {
                          "type": "string",
                          "description": "If the type is \"CLASSIC\", then a name is required. Otherwise, not allowed.\n"
                        },
                        "arn": {
                          "type": "string",
                          "description": "If the type is \"TARGET_GROUP\", then an ARN is required. Otherwise, not allowed.\n"
                        }
                      }
                    },
                    "example": [
                      {
                        "type": "CLASSIC",
                        "name": "MyClassicLoadBalancer"
                      },
                      {
                        "type": "TARGET_GROUP",
                        "arn": "arn:aws:elasticloadbalancing:us-west-2:922761411234:targetgroup"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Cluster Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster/o-12345abc/loadBalancer/attach"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/loadBalancer/detach": {
      "put": {
        "summary": "Detach Load Balancers",
        "description": "Remove load balancers from the existing load balancers on the Ocean Cluster.\n",
        "operationId": "OceanAWSClusterDetachLb",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "loadBalancers"
                ],
                "properties": {
                  "loadBalancers": {
                    "type": "array",
                    "description": "Load balancers to remove from the Ocean cluster.\n",
                    "items": {
                      "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1loadBalancer~1attach/put/requestBody/content/application~1json/schema/properties/loadBalancers/items"
                    },
                    "example": {
                      "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1loadBalancer~1attach/put/requestBody/content/application~1json/schema/properties/loadBalancers/example"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Cluster Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster/o-12345abc/loadBalancer/detach"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/mcs/ecs/cluster/{clusterName}/costs": {
      "get": {
        "summary": "Get Cluster Costs",
        "description": "Describes ECS cluster costs in a time range.\\\nThe response will provide the distribution of the costs per cluster.\n\n<span><strong>Deprecated API:</strong></span></span>\nThis API is no longer supported. As an alternative you may use the \"Get Ecs Cluster Aggregated Detailed Costs\" API.\n",
        "operationId": "oceanEcsClusterCosts",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "toDate",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "End date value using either the date format \"yyyy-mm-dd; 2016-11-20\" or ms \"1494751821472\".\n"
          },
          {
            "in": "query",
            "name": "fromDate",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Beginning date value using either the date format \"yyyy-mm-dd; 2016-11-20\" or ms \"1494751821472\".\n"
          },
          {
            "in": "query",
            "name": "region",
            "example": "us-east-1",
            "description": "Region name.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "path",
            "name": "clusterName",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "ocean.ecs",
            "description": "The name of the ECS cluster, as set in the Ocean cluster configuration under the \"clusterName\" field.\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean ECS Cluster Costs Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/mcs/ecs/cluster/my-cluster-identifier/costs"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "totalCost": {
                                    "type": "number",
                                    "format": "float",
                                    "example": 279.9907
                                  },
                                  "headroomCost": {
                                    "type": "number",
                                    "format": "float",
                                    "example": 279.9907
                                  },
                                  "standAloneTasksCost": {
                                    "type": "number",
                                    "format": "float",
                                    "example": 0
                                  },
                                  "ecsGroups": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "example": "default"
                                        },
                                        "cost": {
                                          "type": "number",
                                          "format": "float",
                                          "example": 18.00862
                                        },
                                        "type": {
                                          "type": "string",
                                          "example": "SERVICE",
                                          "enum": [
                                            "SERVICE",
                                            "HEADROOM",
                                            "STAND_ALONE",
                                            "IDLE"
                                          ]
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/import": {
      "post": {
        "summary": "Upgrade Elastigroup To Ocean",
        "description": "Upgrade an Elastigroup with Kubernetes integration to Ocean for Kubernetes cluster.\n",
        "operationId": "oceanAwsUpgradeElastigroup",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "groupId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "description": "Elastigroup identifier\n"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "example": "spotinst:ocean:aws:k8s"
                    },
                    "items": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "example": "o-482d9d26"
                        },
                        "name": {
                          "type": "string",
                          "example": "Ocean::test-k8s-batch-1"
                        },
                        "clusterName": {
                          "type": "string",
                          "example": "testEnvironment_Batch_852a670a-aa73-3d5d-9576-147a26d43401"
                        },
                        "autoScaler": {
                          "type": "object",
                          "properties": {
                            "isEnabled": {
                              "type": "boolean",
                              "example": true
                            },
                            "isAutoConfig": {
                              "type": "boolean",
                              "example": true
                            }
                          }
                        },
                        "region": {
                          "type": "string",
                          "example": "us-west-2"
                        },
                        "groupId": {
                          "type": "string",
                          "example": "sig-b6bb68fb"
                        },
                        "strategy": {
                          "type": "object",
                          "properties": {
                            "fallbackToOd": {
                              "type": "boolean",
                              "example": true
                            },
                            "spotPercentage": {
                              "type": "integer",
                              "example": 100
                            },
                            "drainingTimeout": {
                              "type": "integer",
                              "example": 120
                            }
                          }
                        },
                        "compute": {
                          "type": "object",
                          "title": "Ocean Compute",
                          "description": "Compute specifications for the Ocean cluster.\n",
                          "required": [
                            "subnetIds",
                            "launchSpecification"
                          ],
                          "properties": {
                            "subnetIds": {
                              "type": "array",
                              "description": "A comma-separated list of subnet identifiers for the Ocean cluster. Subnet identifiers should be configured with auto-assign public IP.\n",
                              "items": {
                                "type": "string"
                              },
                              "example": [
                                "subnet-4c1d1538",
                                "subnet-2791bb61"
                              ]
                            },
                            "instanceTypes": {
                              "type": "object",
                              "description": "The type of instances that may or may not be a part of the Ocean cluster.",
                              "properties": {
                                "whitelist": {
                                  "type": "array",
                                  "description": "Instance types allowed in the Ocean cluster. Cannot be configured if a deny list is configured.\n",
                                  "items": {
                                    "type": "string"
                                  },
                                  "example": [
                                    "c4.xlarge",
                                    "c4.2xlarge",
                                    "c4.4xlarge",
                                    "c4.8xlarge"
                                  ]
                                },
                                "blacklist": {
                                  "type": "array",
                                  "description": "Instance types to avoid launching in the Ocean cluster. Cannot be configured if a permit list is configured.\n",
                                  "items": {
                                    "type": "string"
                                  },
                                  "example": [
                                    "r5.large",
                                    "r5.xlarge"
                                  ]
                                },
                                "filters": {
                                  "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1instanceTypeFiltersSimulation/post/requestBody/content/application~1json/schema/allOf/0/properties/filters"
                                }
                              }
                            },
                            "launchSpecification": {
                              "type": "object",
                              "description": "The default specification for nodes in the cluster. Used as a template for custom Virtual Node Groups to inherit values which are not explicitly defined in them, and as a default VNG when no other VNGs exist or match the workload requirements.\n",
                              "required": [
                                "imageId",
                                "securityGroupIds"
                              ],
                              "properties": {
                                "useAsTemplateOnly": {
                                  "type": "boolean",
                                  "description": "The configuration specified on the Ocean object will function only as a template for virtual node groups.\n",
                                  "default": false
                                },
                                "imageId": {
                                  "type": "string",
                                  "description": "identifier of the image used to launch the instances."
                                },
                                "userData": {
                                  "type": "string",
                                  "format": "byte",
                                  "description": "The base 64 encoded MIME user data to make available to the instances."
                                },
                                "securityGroupIds": {
                                  "type": "array",
                                  "description": "One or more security group identifiers.",
                                  "items": {
                                    "type": "string",
                                    "example": [
                                      "sg-c3d914b0"
                                    ]
                                  }
                                },
                                "iamInstanceProfile": {
                                  "type": "object",
                                  "description": "The instance profile iamRole.",
                                  "properties": {
                                    "arn": {
                                      "type": "string",
                                      "description": "The iamRole ARN.",
                                      "example": "orform"
                                    }
                                  }
                                },
                                "blockDeviceMappings": {
                                  "type": "array",
                                  "description": "Block devices that are exposed to the instance. You can specify virtual devices and EBS volumes.\\\nThis parameter and rootVolumeSize cannot be in the specification at the same time.\\\nThis parameter can be null. If not null, it must contain at least one block device.\n",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "deviceName": {
                                        "type": "string",
                                        "description": "Set device name.\n",
                                        "example": "/dev/xvda"
                                      },
                                      "ebs": {
                                        "type": "object",
                                        "description": "Set EBS properties.\n",
                                        "properties": {
                                          "throughput": {
                                            "type": "integer",
                                            "minimum": 125,
                                            "maximum": 1000,
                                            "example": 125,
                                            "description": "The amount of data transferred to or from a storage device per second. You can use this parameter only if volumetype=‘gp3’.\n"
                                          },
                                          "deleteOnTermination": {
                                            "type": "boolean",
                                            "description": "Flag to delete the EBS on instance termination.\n",
                                            "example": false
                                          },
                                          "encrypted": {
                                            "type": "boolean",
                                            "example": false
                                          },
                                          "iops": {
                                            "type": "integer",
                                            "description": "Must be greater than or equal to 0.\n",
                                            "example": 1
                                          },
                                          "dynamicIops": {
                                            "type": "object",
                                            "required": [
                                              "baseSize",
                                              "resource",
                                              "sizePerResourceUnit"
                                            ],
                                            "description": "Set dynamic IOPS properties. When using this object, you cannot use the `iops` object. You must use one or the other.\nWhen `dynamicIops` is configured, the `volumeType` field must also be set.\n",
                                            "properties": {
                                              "baseSize": {
                                                "type": "integer",
                                                "description": "Initial size for IOPS.\n",
                                                "example": 50
                                              },
                                              "resource": {
                                                "type": "string",
                                                "enum": [
                                                  "CPU",
                                                  "memory"
                                                ],
                                                "description": "",
                                                "example": "CPU"
                                              },
                                              "sizePerResourceUnit": {
                                                "type": "integer",
                                                "description": "Additional size per resource unit (in IOPS).\nFor example: if baseSize=50, and sizePerResourceUnit=20, and an instance with 2 CPU is launched - its IOPS size will be: 90\n",
                                                "example": 20
                                              }
                                            }
                                          },
                                          "kmsKeyId": {
                                            "type": "string",
                                            "example": "alias/aws/ebs"
                                          },
                                          "snapshotId": {
                                            "type": "string",
                                            "example": "snap-abcdefghi111110"
                                          },
                                          "volumeType": {
                                            "type": "string",
                                            "description": "Specifies the EBS volume type. This field is required when either `dynamicIops` or `dynamicVolumeSize` is configured.\n",
                                            "example": "gp2"
                                          },
                                          "volumeSize": {
                                            "type": "integer",
                                            "description": "Set volume size (in GB). When using this property, you cannot use dynamicVolumeSize. You must use one of the other. Volume size should be greater than or equal to the size configured in the AMI.\n"
                                          },
                                          "dynamicVolumeSize": {
                                            "type": "object",
                                            "required": [
                                              "baseSize",
                                              "resource",
                                              "sizePerResourceUnit"
                                            ],
                                            "description": "Set dynamic volume size properties. When using this object, you cannot use volumeSize. You must use one or the other. When `dynamicVolumeSize` is configured, the `volumeType` field must also be set.\n",
                                            "properties": {
                                              "baseSize": {
                                                "type": "integer",
                                                "description": "Initial size per volume.\n",
                                                "example": 50
                                              },
                                              "resource": {
                                                "type": "string",
                                                "enum": [
                                                  "CPU"
                                                ],
                                                "example": "CPU"
                                              },
                                              "sizePerResourceUnit": {
                                                "type": "integer",
                                                "description": "Additional size per resource unit (in GB). For example, if baseSize=50, and sizePerResourceUnit=20, and an instance with 2 CPU is launched, its disk size will be 90 GB.\n",
                                                "example": 20
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                },
                                "keyPair": {
                                  "type": "string",
                                  "description": "The key pair to attach the instances.",
                                  "example": "spotinst-labs-oregon"
                                },
                                "tags": {
                                  "type": "array",
                                  "description": "List of kay-value pairs of tags.\n",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "tagKey": {
                                        "type": "string",
                                        "description": "Set the tag key.\n",
                                        "example": "Creator"
                                      },
                                      "tagValue": {
                                        "type": "string",
                                        "description": "Set the tag value.\n",
                                        "example": "John Doe"
                                      }
                                    }
                                  }
                                },
                                "loadBalancers": {
                                  "type": "array",
                                  "description": "Configure load balancer settings for the Ocean cluster.\n",
                                  "items": {
                                    "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1loadBalancer~1attach/put/requestBody/content/application~1json/schema/properties/loadBalancers/items"
                                  },
                                  "example": {
                                    "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1loadBalancer~1attach/put/requestBody/content/application~1json/schema/properties/loadBalancers/example"
                                  }
                                },
                                "associatePublicIpAddress": {
                                  "type": "boolean",
                                  "description": "Configure public IP address allocation.",
                                  "default": false,
                                  "example": false
                                },
                                "associateIpv6Address": {
                                  "type": "boolean",
                                  "description": "Configure IPv6 address allocation. \\\nNot required if the subnet is configured to “auto assign ipv6 addresses”.\n",
                                  "default": false,
                                  "example": false
                                },
                                "primaryIpv6": {
                                  "type": "boolean",
                                  "example": false,
                                  "description": "Enables assignment of a primary IPv6 address to the cluster. This feature is only available when `associateIpv6Addresses` is explicitly set to `true`. Additionally, the cluster must have been initially created as an EKS cluster in IPv6 mode.\n"
                                },
                                "monitoring": {
                                  "type": "boolean",
                                  "description": "Enable detailed monitoring for cluster. Flag will enable CloudWatch detailed monitoring (one minute increments). There are additional hourly costs for this service based on the region used.\n",
                                  "example": true
                                },
                                "ebsOptimized": {
                                  "type": "boolean",
                                  "description": "Enable EBS optimization for the cluster. A flag will enable optimized capacity for high bandwidth connectivity to the EB service for non EBS optimized instance types. For instances that are EBS optimized, this flag will be ignored.\n",
                                  "example": true
                                },
                                "rootVolumeSize": {
                                  "type": "integer",
                                  "description": "Set root volume size in GiB.",
                                  "example": 73
                                },
                                "reservedENIs": {
                                  "type": "integer",
                                  "description": "Specifies the count of ENIs to reserve per instance type for scaling purposes.\n",
                                  "default": 0,
                                  "example": 1
                                },
                                "instanceMetadataOptions": {
                                  "type": "object",
                                  "title": "instanceMetadataOptions",
                                  "required": [
                                    "httpTokens"
                                  ],
                                  "description": "Ocean instance metadata options object for [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html).\n",
                                  "properties": {
                                    "httpTokens": {
                                      "type": "string",
                                      "description": "Determines if a signed token is required or not.\n",
                                      "enum": [
                                        "optional",
                                        "required"
                                      ],
                                      "example": "optional"
                                    },
                                    "httpPutResponseHopLimit": {
                                      "type": "integer",
                                      "description": "An integer within 1,64 range (including).\nThe desired HTTP PUT response hop limit for instance metadata requests.\nThe larger the number, the further instance metadata requests can travel.\n",
                                      "example": 12
                                    },
                                    "httpEndpoint": {
                                      "type": "string",
                                      "description": "Enables or disables the HTTP metadata endpoint on your instances.\n",
                                      "enum": [
                                        "disabled",
                                        "enabled"
                                      ],
                                      "example": "disabled"
                                    }
                                  }
                                },
                                "resourceTagSpecification": {
                                  "type": "object",
                                  "description": "Optional field. Specify which resources should be tagged with Virtual Node Group tags or Ocean tags. If tags are set on the VNG, the resources will be tagged with the VNG tags; otherwise, they will be tagged with the Ocean tags.",
                                  "properties": {
                                    "volumes": {
                                      "type": "object",
                                      "description": "Optional field. Tag specification for Volume resources.",
                                      "properties": {
                                        "shouldTag": {
                                          "type": "boolean",
                                          "description": "Optional field. Specify if Volume resources will be tagged with Virtual Node Group tags or Ocean tags.",
                                          "default": false,
                                          "example": false
                                        }
                                      }
                                    }
                                  }
                                },
                                "healthCheckUnhealthyDurationBeforeReplacement": {
                                  "type": "integer",
                                  "description": "The amount of time, in seconds, an existing instance should remain active after becoming unhealthy.\nAfter the set time out the instance will be replaced. \nThe minimum value allowed is 60, and it must be a multiple of 60.\n",
                                  "minimum": 60,
                                  "default": 120,
                                  "example": 60
                                },
                                "startupTaints": {
                                  "type": "array",
                                  "description": "Temporary taints applied to a node during its initialization phase. \nFor a startup taint to work, it must also be set as a regular taint\nin the userData for the cluster.\n",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "key": {
                                        "type": "string",
                                        "description": "Set startup taint key.\n"
                                      },
                                      "value": {
                                        "type": "string",
                                        "description": "Set startup taint value.\n"
                                      },
                                      "effect": {
                                        "type": "string",
                                        "description": "Set startup taint effect.\n"
                                      }
                                    }
                                  },
                                  "example": [
                                    {
                                      "key": "node.cilium.io/agent-not-ready",
                                      "value": true,
                                      "effect": "NoSchedule"
                                    }
                                  ]
                                },
                                "instanceStorePolicy": {
                                  "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec/properties/instanceStorePolicy"
                                },
                                "gpu": {
                                  "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec/properties/gpu"
                                }
                              }
                            }
                          }
                        },
                        "createdAt": {
                          "type": "string",
                          "example": "2018-11-05T12:55:50.000+0000"
                        },
                        "updatedAt": {
                          "type": "string",
                          "example": "2018-11-05T12:58:15.000+0000"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/roll": {
      "summary": "Ocean for AWS",
      "post": {
        "summary": "Initiate Roll",
        "description": "Roll an entire Ocean cluster or roll subsets of the cluster by specifying launchSpecIds or instanceIds. Performing this request will start the roll immediately and run it in defined batches.\nNote that the first response for a successful request will indicate the start of a roll. In order to check the status of a roll, you can use the GET Roll API.\n",
        "operationId": "oceanAwsRollInit",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "Roll",
                    "properties": {
                      "roll": {
                        "allOf": [
                          {
                            "type": "object",
                            "properties": {
                              "batchSizePercentage": {
                                "type": "integer",
                                "description": "Value as a percent to set the size of a batch in a roll. Valid values are 0-100.\n",
                                "example": 20
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "comment": {
                                "type": "string",
                                "description": "Add a comment description for the roll. The comment is limited to 256 chars.\n",
                                "example": "This is why I deployed my cluster."
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "respectPdb": {
                                "type": "boolean",
                                "description": "During the roll, if the parameter is set to true we honor PDB during the instance replacement.\n",
                                "example": true,
                                "default": false
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "batchMinHealthyPercentage": {
                                "type": "integer",
                                "description": "Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n",
                                "example": 100,
                                "default": 50
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "reportPartialCompletion": {
                                "type": "boolean",
                                "description": "When set to true, a roll that ends with a mixed result of successfully and unsuccessfully replaced instances is reported as PARTIALLY_COMPLETED. When set to false, a mixed result is reported as FAILED.\n",
                                "example": true,
                                "default": false
                              }
                            }
                          }
                        ]
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "Roll with instance ids",
                    "properties": {
                      "roll": {
                        "allOf": [
                          {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/0"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/1"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/2"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/3"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "instanceIds": {
                                "type": "array",
                                "description": "List of instance identifiers to be rolled. Each identifier is a string. InstanceIds can be null, and cannot be used together with launchSpecIds.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "i-0003a99ffb566f039",
                                  "i-0567a99ffb566f765"
                                ]
                              }
                            }
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/4"
                          }
                        ]
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "Roll with Virtual Node Group ids",
                    "properties": {
                      "roll": {
                        "allOf": [
                          {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/0"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/1"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/2"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/3"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "launchSpecIds": {
                                "type": "array",
                                "description": "List of virtual node group identifiers to be rolled. Each identifier is a string. LaunchSpecIds can be null, and cannot be used together with instanceIds.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "ols-76694a7d",
                                  "ols-56694a76"
                                ]
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "disableLaunchSpecAutoScaling": {
                                "type": "boolean",
                                "description": "When set to True and virtual node group identifiers are defined to roll, the specified Virtual Node Group(s) will be blocked from scaling up. (Replacements will scale up in other Virtual Node Groups that match the displaced pods instead.) This is meant for different use cases of 'migrating' nodes from one Virtual Node Group to another.\n",
                                "example": true
                              }
                            }
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/4"
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Cluster Roll Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "scr-5aaf854e"
                    },
                    "scope": {
                      "type": "string",
                      "enum": [
                        "Cluster",
                        "Vngs",
                        "Vng",
                        "Instances",
                        "Instance"
                      ],
                      "example": "Cluster"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "IN_PROGRESS",
                        "COMPLETED",
                        "PARTIALLY_COMPLETED",
                        "FAILED",
                        "STOPPED"
                      ],
                      "example": "IN_PROGRESS"
                    },
                    "currentBatch": {
                      "type": "integer",
                      "example": 1
                    },
                    "numOfBatches": {
                      "type": "integer",
                      "example": 5
                    },
                    "comment": {
                      "type": "string",
                      "example": "This is why I deployed my cluster."
                    },
                    "progress": {
                      "type": "object",
                      "properties": {
                        "unit": {
                          "type": "string",
                          "example": "percentage"
                        },
                        "value": {
                          "type": "integer",
                          "example": 0
                        },
                        "detailedStatus": {
                          "type": "object",
                          "properties": {
                            "oldInstances": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "instanceId": {
                                    "type": "string"
                                  },
                                  "status": {
                                    "type": "string"
                                  }
                                }
                              },
                              "example": [
                                {
                                  "instanceId": "i-003a0281a24c01a20",
                                  "status": "REPLACED"
                                },
                                {
                                  "instanceId": "i-003a0281a24c01a21",
                                  "status": "TO_BE_REPLACED"
                                },
                                {
                                  "instanceId": "i-003a0281a24c01a22",
                                  "status": "COULD_NOT_BE_REPLACED"
                                },
                                {
                                  "instanceId": "i-003a0281a24c01a23",
                                  "status": "NOT_REPLACED_DUE_TO_PDB"
                                }
                              ]
                            }
                          }
                        }
                      }
                    },
                    "oceanId": {
                      "type": "string",
                      "example": "o-12e31234"
                    },
                    "instanceIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "i-0003a99ffb566f039",
                        "i-0567a99ffb566f765"
                      ]
                    },
                    "launchSpecIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "ols-76694a7d",
                        "ols-56694a76"
                      ]
                    },
                    "respectPdb": {
                      "type": "boolean",
                      "example": true
                    },
                    "batchMinHealthyPercentage": {
                      "type": "integer",
                      "example": 100
                    },
                    "reportPartialCompletion": {
                      "type": "boolean",
                      "example": true
                    },
                    "createdAt": {
                      "type": "string",
                      "example": "2019-03-24T15:46:09.000Z"
                    },
                    "updatedAt": {
                      "type": "string",
                      "example": "2019-03-24T15:46:09.000Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Rolls",
        "description": "Get status for all rolls of an Ocean cluster.\n",
        "operationId": "oceanAwsRollList",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "oceanClusterId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "o-1abcd124",
            "description": "The identifier of the Ocean cluster\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Get List Of Rolls Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "status": {
                      "type": "object",
                      "properties": {
                        "code": {
                          "type": "integer",
                          "example": 200
                        },
                        "message": {
                          "type": "string",
                          "example": "OK"
                        }
                      }
                    },
                    "kind": {
                      "type": "string",
                      "example": "spotinst:ocean:aws:k8s:cluster:roll"
                    },
                    "items": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "scr-5aaf854e"
                          },
                          "scope": {
                            "type": "string",
                            "enum": [
                              "Cluster",
                              "Vngs",
                              "Vng",
                              "Instances",
                              "Instance"
                            ],
                            "example": "Cluster"
                          },
                          "status": {
                            "type": "string",
                            "enum": [
                              "IN_PROGRESS",
                              "COMPLETED",
                              "PARTIALLY_COMPLETED",
                              "FAILED",
                              "STOPPED"
                            ],
                            "example": "IN_PROGRESS"
                          },
                          "currentBatch": {
                            "type": "integer",
                            "example": 1
                          },
                          "numOfBatches": {
                            "type": "integer",
                            "example": 5
                          },
                          "comment": {
                            "type": "string",
                            "example": "This is why I deployed my cluster."
                          },
                          "progress": {
                            "type": "object",
                            "properties": {
                              "unit": {
                                "type": "string",
                                "example": "percentage"
                              },
                              "value": {
                                "type": "integer",
                                "example": 0
                              },
                              "detailedStatus": {
                                "type": "object",
                                "properties": {
                                  "oldInstances": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "instanceId": {
                                          "type": "string"
                                        },
                                        "status": {
                                          "type": "string"
                                        }
                                      }
                                    },
                                    "example": [
                                      {
                                        "instanceId": "i-003a0281a24c01a20",
                                        "status": "REPLACED"
                                      },
                                      {
                                        "instanceId": "i-003a0281a24c01a21",
                                        "status": "TO_BE_REPLACED"
                                      },
                                      {
                                        "instanceId": "i-003a0281a24c01a22",
                                        "status": "COULD_NOT_BE_REPLACED"
                                      },
                                      {
                                        "instanceId": "i-003a0281a24c01a23",
                                        "status": "NOT_REPLACED_DUE_TO_PDB"
                                      }
                                    ]
                                  }
                                }
                              }
                            }
                          },
                          "oceanId": {
                            "type": "string",
                            "example": "o-12e31234"
                          },
                          "instanceIds": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "i-0003a99ffb566f039",
                              "i-0567a99ffb566f765"
                            ]
                          },
                          "launchSpecIds": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "ols-76694a7d",
                              "ols-56694a76"
                            ]
                          },
                          "respectPdb": {
                            "type": "boolean",
                            "example": true
                          },
                          "batchMinHealthyPercentage": {
                            "type": "integer",
                            "example": 100
                          },
                          "reportPartialCompletion": {
                            "type": "boolean",
                            "example": true
                          },
                          "createdAt": {
                            "type": "string",
                            "example": "2019-03-24T15:46:09.000Z"
                          },
                          "updatedAt": {
                            "type": "string",
                            "example": "2019-03-24T15:46:09.000Z"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/roll/{ROLL_ID}": {
      "summary": "Ocean for AWS",
      "put": {
        "summary": "Update Roll",
        "description": "Update a roll of an Ocean cluster.\n\n*Performing the request will stop the next batch in a roll.*\n",
        "operationId": "oceanAwsRollUpdate",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "oceanClusterId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "o-1abcd124",
            "description": "The identifier of the Ocean cluster\n"
          },
          {
            "in": "path",
            "name": "ROLL_ID",
            "example": "scr-12345abc",
            "description": "Ocean cluster roll identifier\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "roll"
                ],
                "properties": {
                  "roll": {
                    "type": "object",
                    "required": [
                      "status"
                    ],
                    "description": "Object that specifies the parameters required to initiate a roll (also called a deployment).\n",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "STOPPED"
                        ],
                        "description": "Set status of a roll. Valid values: \"STOPPED\"\n",
                        "example": "STOPPED"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Cluster Roll Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "id": {
                      "type": "string",
                      "example": "scr-5aaf854e"
                    },
                    "scope": {
                      "type": "string",
                      "enum": [
                        "Cluster",
                        "Vngs",
                        "Vng",
                        "Instances",
                        "Instance"
                      ],
                      "example": "Cluster"
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "STOPPED"
                      ],
                      "example": "STOPPED"
                    },
                    "currentBatch": {
                      "type": "integer",
                      "example": 1
                    },
                    "numOfBatches": {
                      "type": "integer",
                      "example": 5
                    },
                    "progress": {
                      "type": "object",
                      "properties": {
                        "unit": {
                          "type": "string",
                          "example": "percentage"
                        },
                        "value": {
                          "type": "integer",
                          "example": 0
                        },
                        "detailedStatus": {
                          "type": "object",
                          "properties": {
                            "oldInstances": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "instanceId": {
                                    "type": "string"
                                  },
                                  "status": {
                                    "type": "string"
                                  }
                                }
                              },
                              "example": [
                                {
                                  "instanceId": "i-003a0281a24c01a20",
                                  "status": "REPLACED"
                                },
                                {
                                  "instanceId": "i-003a0281a24c01a21",
                                  "status": "TO_BE_REPLACED"
                                },
                                {
                                  "instanceId": "i-003a0281a24c01a22",
                                  "status": "COULD_NOT_BE_REPLACED"
                                },
                                {
                                  "instanceId": "i-003a0281a24c01a23",
                                  "status": "NOT_REPLACED_DUE_TO_PDB"
                                }
                              ]
                            }
                          }
                        }
                      }
                    },
                    "oceanId": {
                      "type": "string",
                      "example": "o-12e31234"
                    },
                    "respectPdb": {
                      "type": "boolean",
                      "example": true
                    },
                    "batchMinHealthyPercentage": {
                      "type": "integer",
                      "example": 100
                    },
                    "createdAt": {
                      "type": "string",
                      "example": "2019-03-24T15:46:09.000Z"
                    },
                    "updatedAt": {
                      "type": "string",
                      "example": "2019-03-24T15:46:09.000Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Roll",
        "description": "Get status for a roll of an Ocean cluster.\n",
        "operationId": "oceanAwsRollGetSingleRoll",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "oceanClusterId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "o-1abcd124",
            "description": "The identifier of the Ocean cluster\n"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1roll~1%7BROLL_ID%7D/put/parameters/2"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1roll/post/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/nodes": {
      "get": {
        "summary": "Get Cluster Nodes",
        "description": "Get nodes data of an Ocean cluster.\n",
        "operationId": "oceanAwsGetNodes",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "in": "query",
            "name": "launchSpecId",
            "example": "ols-123abc",
            "description": "Ocean cluster Virtual Node Group identifier.\n",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "instanceId",
            "schema": {
              "type": "string"
            },
            "example": "i-123",
            "description": "Get a specific node by instance id."
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Kubernetes AWS Nodes Data Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster/o-12345abc/nodes"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "AWS Ocean kubernetes node data",
                                "description": "Node data of Ocean cluster.",
                                "properties": {
                                  "instanceId": {
                                    "type": "string",
                                    "example": "i-123",
                                    "description": "The AWS instance id of this node.\n"
                                  },
                                  "instanceType": {
                                    "type": "string",
                                    "example": "c3.large",
                                    "description": "The AWS instance type of this node.\n"
                                  },
                                  "availabilityZone": {
                                    "type": "string",
                                    "example": "us-west-2b",
                                    "description": "The AWS availability zone of this node.\n"
                                  },
                                  "launchSpecId": {
                                    "type": "string",
                                    "example": "ols-123",
                                    "description": "The node's Virtual Node Group ID.\n"
                                  },
                                  "launchSpecName": {
                                    "type": "string",
                                    "example": "dev-vng",
                                    "description": "The node's Virtual Node Group name.\n"
                                  },
                                  "lifeCycle": {
                                    "type": "string",
                                    "enum": [
                                      "Spot",
                                      "OD",
                                      "OD (RI)",
                                      "OD (SP)"
                                    ],
                                    "example": "Spot",
                                    "description": "The AWS lifeCycle of this node.\n"
                                  },
                                  "publicIp": {
                                    "type": "string",
                                    "example": "1.2.3.4",
                                    "description": "This node's public ip.\n"
                                  },
                                  "workloadRequestedMilliCpu": {
                                    "type": "number",
                                    "example": 1320,
                                    "description": "The amount of milli cpus requested by the kubernetes workload.\n"
                                  },
                                  "workloadRequestedMemoryInMiB": {
                                    "type": "number",
                                    "example": 500,
                                    "description": "The amount of memory in MiB requested by the kubernetes workload.\n"
                                  },
                                  "workloadRequestedGpu": {
                                    "type": "number",
                                    "example": 1,
                                    "description": "The amount of gpus requested by the kubernetes workload.\n"
                                  },
                                  "headroomRequestedMilliCpu": {
                                    "type": "number",
                                    "example": 1320,
                                    "description": "The amount of milli cpus saved for headroom.\n"
                                  },
                                  "headroomRequestedMemoryInMiB": {
                                    "type": "number",
                                    "example": 512,
                                    "description": "The amount of memory in MiB saved for headroom.\n"
                                  },
                                  "headroomRequestedGpu": {
                                    "type": "number",
                                    "example": 1,
                                    "description": "The amount of gpus saved for headroom.\n"
                                  },
                                  "allocatableMilliCpu": {
                                    "type": "number",
                                    "example": 2000,
                                    "description": "The amount of allocatable milli cpus as registered in kubernetes.\n"
                                  },
                                  "allocatableMemoryInMiB": {
                                    "type": "number",
                                    "example": 3646.1,
                                    "description": "The amount of allocatable memory in MiB as registered in kubernetes.\n"
                                  },
                                  "allocatableGpu": {
                                    "type": "number",
                                    "example": 1,
                                    "description": "The amount of allocatable gpus as registered in kubernetes.\n"
                                  },
                                  "nodeName": {
                                    "type": "string",
                                    "example": "node-1",
                                    "description": "The kubernetes node name.\n"
                                  },
                                  "registrationStatus": {
                                    "type": "string",
                                    "enum": [
                                      "Registered",
                                      "Registering",
                                      "Failed"
                                    ],
                                    "example": "Registered",
                                    "description": "The registration status of this node.\n"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2021-10-1T05:51:06.000Z",
                                    "description": "When was this node's instance was created at.\n"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:nodes"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/detachInstances": {
      "put": {
        "summary": "Detach Instances",
        "description": "Detach instances from your Ocean cluster.\n",
        "operationId": "oceanAwsDetachInstance",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1detachInstances/put/requestBody/content/application~1json/schema/allOf/0"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Detach Instances Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster/o-abcd1234/detachInstances"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/aggregatedCosts": {
      "post": {
        "summary": "Get Cluster Aggregated Detailed Costs",
        "description": "Provides Kubernetes cluster resource usage and costs over a time interval which can be grouped and/or filtered by label/annotaion.\\\nFor example - application name (webapp, backend), environment (production, staging), version etc.\\\nThe response will contain a breakdown of the cluster resource costs($) in terms of compute (CPU, memory), storage (block, file, rootVolume).\nThe response will group the cluster usage costs based on preselected default of application namespace or user selected label or annotation.\\\nWithin the group, resource costs are broken down per resource kind (Deployment, DaemonSet etc.).\n\nTime Rounding Down: The CostAnalysis API applies rounding down to the hours provided during the call.\\\nFor example, the value 1707004799099 (In GMT) representing Saturday, February 3, 2024, 23:59:59.099 is rounded down to Saturday, February 3, 2024, 23:00:00.000, resulting in the omission of one hour of cost.\n",
        "operationId": "oceanAwsK8sClusterAggregatedDetailedCosts",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "endTime",
                      "startTime"
                    ],
                    "properties": {
                      "startTime": {
                        "type": "string",
                        "example": "2018-06-20T11:35:02.745Z",
                        "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "endTime": {
                        "type": "string",
                        "example": "2018-06-22T11:30:01.745Z",
                        "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "groupBy": {
                        "type": "string",
                        "description": "The parameter we want to group the costs by.\n",
                        "default": "namespace",
                        "example": "namespace.label.env",
                        "enum": [
                          "namespace",
                          "namespace.label.${labelKey}",
                          "resource.label.${labelKey}",
                          "resource.annotation.${annotationKey}",
                          "namespace.annotation.${annotationKey}"
                        ]
                      },
                      "filter": {
                        "type": "object",
                        "description": "Describe how to filter the costs. Optional field.",
                        "required": [
                          "scope",
                          "conditions"
                        ],
                        "properties": {
                          "scope": {
                            "type": "string",
                            "enum": [
                              "namespace",
                              "resource"
                            ]
                          },
                          "conditions": {
                            "type": "object",
                            "required": [
                              "anyMatch"
                            ],
                            "properties": {
                              "anyMatch": {
                                "type": "array",
                                "description": "Array of conditions set that OR operator is applied between them.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "allMatch"
                                  ],
                                  "properties": {
                                    "allMatch": {
                                      "type": "array",
                                      "description": "Array of conditions that AND operator is applied between them.\\\nFor example, (label env equals prod) AND (label app exists)\n",
                                      "items": {
                                        "type": "object",
                                        "description": "The basic expression of a condition",
                                        "required": [
                                          "type",
                                          "key",
                                          "operator"
                                        ],
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "enum": [
                                              "label",
                                              "annotation"
                                            ]
                                          },
                                          "key": {
                                            "type": "string",
                                            "description": "May be any string, but shouldn't be empty.\n",
                                            "example": "env"
                                          },
                                          "operator": {
                                            "type": "string",
                                            "enum": [
                                              "equals",
                                              "notEquals",
                                              "exists",
                                              "notExists"
                                            ]
                                          },
                                          "value": {
                                            "type": "string",
                                            "description": "Required whenever the operator is \"equals\" or \"notEquals\".\n",
                                            "example": "prod"
                                          }
                                        }
                                      }
                                    }
                                  }
                                },
                                "example": [
                                  {
                                    "allMatch": [
                                      {
                                        "type": "label",
                                        "key": "env",
                                        "operator": "equals",
                                        "value": "prod"
                                      },
                                      {
                                        "type": "label",
                                        "key": "app",
                                        "operator": "exists"
                                      }
                                    ]
                                  },
                                  {
                                    "allMatch": [
                                      {
                                        "type": "annotation",
                                        "key": "meta.data",
                                        "operator": "exists"
                                      }
                                    ]
                                  }
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Cluster Aggregated Detailed Costs Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster/o-abcd1234/aggregatedCosts"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "result": {
                                    "type": "object",
                                    "properties": {
                                      "totalForDuration": {
                                        "type": "object",
                                        "properties": {
                                          "startTime": {
                                            "type": "string",
                                            "example": "2018-06-20T11:35:01.745Z",
                                            "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                          },
                                          "endTime": {
                                            "type": "string",
                                            "example": "2018-06-22T11:30:01.745Z",
                                            "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                          },
                                          "summary": {
                                            "type": "object",
                                            "properties": {
                                              "total": {
                                                "type": "number",
                                                "example": 41772.882658035785,
                                                "description": "The total costs of cluster in a given time range"
                                              },
                                              "compute": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 40668.1299631538,
                                                    "description": "The total compute costs of the cluster in a given time range"
                                                  },
                                                  "workloads": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 39882.13803327978
                                                      }
                                                    }
                                                  },
                                                  "headroom": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 0
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "storage": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 1104.7526948819868,
                                                    "description": "The total storage costs of the cluster in given time range"
                                                  },
                                                  "block": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 1104.7526948819868
                                                      },
                                                      "ebsPv": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 1104.7526948819868
                                                          }
                                                        }
                                                      },
                                                      "nonPv": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 0
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "file": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 0
                                                      },
                                                      "efsPv": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 0
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "networking": {
                                                "type": "object",
                                                "properties": {
                                                  "totalCost": {
                                                    "type": "number",
                                                    "example": 0.00278988928,
                                                    "description": "The total costs of cluster's networking in a given time range"
                                                  },
                                                  "totalUsage": {
                                                    "type": "number",
                                                    "example": 0.03154064,
                                                    "description": "The total usages of cluster's networking in a given time range"
                                                  },
                                                  "total": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.00139494464
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.01577032
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.00139494464
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.01577032
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "internet": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "interAZ": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "intraAZ": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "interRegion": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          "detailedCosts": {
                                            "type": "object",
                                            "properties": {
                                              "groupedBy": {
                                                "type": "string",
                                                "example": "n.l.name"
                                              },
                                              "aggregations": {
                                                "type": "object",
                                                "description": "Contains aggregation for each group by value.\n",
                                                "additionalProperties": {
                                                  "type": "object",
                                                  "description": "For example - if group by is namespace so each property name will a namesapce in the cluster.",
                                                  "properties": {
                                                    "summary": {
                                                      "type": "object",
                                                      "properties": {
                                                        "total": {
                                                          "type": "number",
                                                          "example": 423.33455
                                                        },
                                                        "compute": {
                                                          "type": "object",
                                                          "properties": {
                                                            "total": {
                                                              "type": "number",
                                                              "example": 125.23778
                                                            }
                                                          }
                                                        },
                                                        "storage": {
                                                          "type": "object",
                                                          "properties": {
                                                            "total": {
                                                              "type": "number",
                                                              "example": 307.09677
                                                            },
                                                            "block": {
                                                              "type": "object",
                                                              "properties": {
                                                                "total": {
                                                                  "type": "number",
                                                                  "example": 300
                                                                },
                                                                "ebsPv": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "total": {
                                                                      "type": "number",
                                                                      "example": 300
                                                                    }
                                                                  }
                                                                },
                                                                "nonPv": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "total": {
                                                                      "type": "number",
                                                                      "example": 0
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            },
                                                            "file": {
                                                              "type": "object",
                                                              "properties": {
                                                                "total": {
                                                                  "type": "number",
                                                                  "example": 7.09677
                                                                },
                                                                "efsPv": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "total": {
                                                                      "type": "number",
                                                                      "example": 7.09677
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          }
                                                        },
                                                        "networking": {
                                                          "type": "object",
                                                          "properties": {
                                                            "totalCost": {
                                                              "type": "number",
                                                              "example": 0.00278988928,
                                                              "description": "The total costs of cluster's networking in a given time range"
                                                            },
                                                            "totalUsage": {
                                                              "type": "number",
                                                              "example": 0.03154064,
                                                              "description": "The total usages of cluster's networking in a given time range"
                                                            },
                                                            "total": {
                                                              "type": "object",
                                                              "properties": {
                                                                "in": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "cost": {
                                                                      "type": "number",
                                                                      "example": 0.00139494464
                                                                    },
                                                                    "usage": {
                                                                      "type": "number",
                                                                      "example": 0.01577032
                                                                    }
                                                                  }
                                                                },
                                                                "out": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "cost": {
                                                                      "type": "number",
                                                                      "example": 0.00139494464
                                                                    },
                                                                    "usage": {
                                                                      "type": "number",
                                                                      "example": 0.01577032
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            },
                                                            "internet": {
                                                              "type": "object",
                                                              "properties": {
                                                                "in": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "cost": {
                                                                      "type": "number",
                                                                      "example": 0.000693972
                                                                    },
                                                                    "usage": {
                                                                      "type": "number",
                                                                      "example": 0.0077108
                                                                    }
                                                                  }
                                                                },
                                                                "out": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "cost": {
                                                                      "type": "number",
                                                                      "example": 0.000693972
                                                                    },
                                                                    "usage": {
                                                                      "type": "number",
                                                                      "example": 0.0077108
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            },
                                                            "interAZ": {
                                                              "type": "object",
                                                              "properties": {
                                                                "in": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "cost": {
                                                                      "type": "number",
                                                                      "example": 0.0000035003200000000003
                                                                    },
                                                                    "usage": {
                                                                      "type": "number",
                                                                      "example": 0.000175016
                                                                    }
                                                                  }
                                                                },
                                                                "out": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "cost": {
                                                                      "type": "number",
                                                                      "example": 0.0000035003200000000003
                                                                    },
                                                                    "usage": {
                                                                      "type": "number",
                                                                      "example": 0.000175016
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            },
                                                            "intraAZ": {
                                                              "type": "object",
                                                              "properties": {
                                                                "in": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "cost": {
                                                                      "type": "number",
                                                                      "example": 0.000693972
                                                                    },
                                                                    "usage": {
                                                                      "type": "number",
                                                                      "example": 0.0077108
                                                                    }
                                                                  }
                                                                },
                                                                "out": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "cost": {
                                                                      "type": "number",
                                                                      "example": 0.000693972
                                                                    },
                                                                    "usage": {
                                                                      "type": "number",
                                                                      "example": 0.0077108
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            },
                                                            "interRegion": {
                                                              "type": "object",
                                                              "properties": {
                                                                "in": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "cost": {
                                                                      "type": "number",
                                                                      "example": 0.0000035003200000000003
                                                                    },
                                                                    "usage": {
                                                                      "type": "number",
                                                                      "example": 0.000175016
                                                                    }
                                                                  }
                                                                },
                                                                "out": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "cost": {
                                                                      "type": "number",
                                                                      "example": 0.0000035003200000000003
                                                                    },
                                                                    "usage": {
                                                                      "type": "number",
                                                                      "example": 0.000175016
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    },
                                                    "resources": {
                                                      "type": "array",
                                                      "items": {
                                                        "type": "object",
                                                        "properties": {
                                                          "metadata": {
                                                            "type": "object",
                                                            "properties": {
                                                              "name": {
                                                                "type": "string",
                                                                "example": "k8s-events"
                                                              },
                                                              "type": {
                                                                "type": "string",
                                                                "example": "Deployment"
                                                              },
                                                              "namespace": {
                                                                "type": "string",
                                                                "example": "kube-system"
                                                              }
                                                            }
                                                          },
                                                          "total": {
                                                            "type": "number",
                                                            "example": 1.655635222089105
                                                          },
                                                          "compute": {
                                                            "type": "object",
                                                            "properties": {
                                                              "total": {
                                                                "type": "number",
                                                                "example": 1.4213600158059045
                                                              }
                                                            }
                                                          },
                                                          "storage": {
                                                            "type": "object",
                                                            "properties": {
                                                              "total": {
                                                                "type": "number",
                                                                "example": 0.23427520628320053
                                                              },
                                                              "block": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "total": {
                                                                    "type": "number",
                                                                    "example": 0.23427520628320053
                                                                  },
                                                                  "ebsPv": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "total": {
                                                                        "type": "number",
                                                                        "example": 0
                                                                      }
                                                                    }
                                                                  },
                                                                  "nonPv": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "total": {
                                                                        "type": "number",
                                                                        "example": 0.23427520628320053
                                                                      }
                                                                    }
                                                                  }
                                                                }
                                                              },
                                                              "file": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "total": {
                                                                    "type": "number",
                                                                    "example": 0
                                                                  },
                                                                  "efsPv": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "total": {
                                                                        "type": "number",
                                                                        "example": 0
                                                                      }
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          },
                                                          "networking": {
                                                            "type": "object",
                                                            "properties": {
                                                              "totalCost": {
                                                                "type": "number",
                                                                "example": 0.00278988928,
                                                                "description": "The total costs of cluster's networking in a given time range"
                                                              },
                                                              "totalUsage": {
                                                                "type": "number",
                                                                "example": 0.03154064,
                                                                "description": "The total usages of cluster's networking in a given time range"
                                                              },
                                                              "total": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "in": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "cost": {
                                                                        "type": "number",
                                                                        "example": 0.00139494464
                                                                      },
                                                                      "usage": {
                                                                        "type": "number",
                                                                        "example": 0.01577032
                                                                      }
                                                                    }
                                                                  },
                                                                  "out": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "cost": {
                                                                        "type": "number",
                                                                        "example": 0.00139494464
                                                                      },
                                                                      "usage": {
                                                                        "type": "number",
                                                                        "example": 0.01577032
                                                                      }
                                                                    }
                                                                  }
                                                                }
                                                              },
                                                              "internet": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "in": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "cost": {
                                                                        "type": "number",
                                                                        "example": 0.000693972
                                                                      },
                                                                      "usage": {
                                                                        "type": "number",
                                                                        "example": 0.0077108
                                                                      }
                                                                    }
                                                                  },
                                                                  "out": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "cost": {
                                                                        "type": "number",
                                                                        "example": 0.000693972
                                                                      },
                                                                      "usage": {
                                                                        "type": "number",
                                                                        "example": 0.0077108
                                                                      }
                                                                    }
                                                                  }
                                                                }
                                                              },
                                                              "interAZ": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "in": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "cost": {
                                                                        "type": "number",
                                                                        "example": 0.0000035003200000000003
                                                                      },
                                                                      "usage": {
                                                                        "type": "number",
                                                                        "example": 0.000175016
                                                                      }
                                                                    }
                                                                  },
                                                                  "out": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "cost": {
                                                                        "type": "number",
                                                                        "example": 0.0000035003200000000003
                                                                      },
                                                                      "usage": {
                                                                        "type": "number",
                                                                        "example": 0.000175016
                                                                      }
                                                                    }
                                                                  }
                                                                }
                                                              },
                                                              "intraAZ": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "in": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "cost": {
                                                                        "type": "number",
                                                                        "example": 0.000693972
                                                                      },
                                                                      "usage": {
                                                                        "type": "number",
                                                                        "example": 0.0077108
                                                                      }
                                                                    }
                                                                  },
                                                                  "out": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "cost": {
                                                                        "type": "number",
                                                                        "example": 0.000693972
                                                                      },
                                                                      "usage": {
                                                                        "type": "number",
                                                                        "example": 0.0077108
                                                                      }
                                                                    }
                                                                  }
                                                                }
                                                              },
                                                              "interRegion": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "in": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "cost": {
                                                                        "type": "number",
                                                                        "example": 0.0000035003200000000003
                                                                      },
                                                                      "usage": {
                                                                        "type": "number",
                                                                        "example": 0.000175016
                                                                      }
                                                                    }
                                                                  },
                                                                  "out": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "cost": {
                                                                        "type": "number",
                                                                        "example": 0.0000035003200000000003
                                                                      },
                                                                      "usage": {
                                                                        "type": "number",
                                                                        "example": 0.000175016
                                                                      }
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "ocean:k8s:cluster:aggregatedCosts:detailed"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/aggregatedCosts/summary": {
      "post": {
        "summary": "Get Cluster Aggregated Summary Costs",
        "description": "Provides Kubernetes cluster summary usage and costs over a time interval which can be grouped and/or filtered by label/annotaion,\\\nfor example - application name (webapp, backend), environment (production, staging), version etc.\\\nThe response will contain a breakdown of the cluster resource costs($) in terms of compute (CPU, memory), storage (block, file, rootVolume).\nThe response will group the cluster usage costs based on preselected default of application namespace or user selected label or annotation.\n\nTime Rounding Down: The CostAnalysis API applies rounding down to the hours provided during the call.\\\nFor example, the value 1707004799099 (In GMT) representing Saturday, February 3, 2024, 23:59:59.099 is rounded down to Saturday, February 3, 2024, 23:00:00.000, resulting in the omission of one hour of cost.\n",
        "operationId": "oceanAwsK8sClusterAggregatedSummaryCosts",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "endTime",
                      "startTime"
                    ],
                    "properties": {
                      "startTime": {
                        "type": "string",
                        "example": "2018-06-20T11:35:02.745Z",
                        "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "endTime": {
                        "type": "string",
                        "example": "2018-06-22T11:30:01.745Z",
                        "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "groupBy": {
                        "type": "string",
                        "description": "The parameter we want to group the costs by.\n",
                        "default": "namespace",
                        "example": "namespace.label.env",
                        "enum": [
                          "namespace",
                          "namespace.label.${labelKey}",
                          "resource.label.${labelKey}",
                          "resource.annotation.${annotationKey}",
                          "namespace.annotation.${annotationKey}"
                        ]
                      },
                      "filter": {
                        "type": "object",
                        "description": "Describe how to filter the costs. Optional field.",
                        "required": [
                          "scope",
                          "conditions"
                        ],
                        "properties": {
                          "scope": {
                            "type": "string",
                            "enum": [
                              "namespace",
                              "resource"
                            ]
                          },
                          "conditions": {
                            "type": "object",
                            "required": [
                              "anyMatch"
                            ],
                            "properties": {
                              "anyMatch": {
                                "type": "array",
                                "description": "Array of conditions set that OR operator is applied between them.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "allMatch"
                                  ],
                                  "properties": {
                                    "allMatch": {
                                      "type": "array",
                                      "description": "Array of conditions that AND operator is applied between them.\\\nFor example, (label env equals prod) AND (label app exists)\n",
                                      "items": {
                                        "type": "object",
                                        "description": "The basic expression of a condition",
                                        "required": [
                                          "type",
                                          "key",
                                          "operator"
                                        ],
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "enum": [
                                              "label",
                                              "annotation"
                                            ]
                                          },
                                          "key": {
                                            "type": "string",
                                            "description": "May be any string, but shouldn't be empty.\n",
                                            "example": "env"
                                          },
                                          "operator": {
                                            "type": "string",
                                            "enum": [
                                              "equals",
                                              "notEquals",
                                              "exists",
                                              "notExists"
                                            ]
                                          },
                                          "value": {
                                            "type": "string",
                                            "description": "Required whenever the operator is \"equals\" or \"notEquals\".\n",
                                            "example": "prod"
                                          }
                                        }
                                      }
                                    }
                                  }
                                },
                                "example": [
                                  {
                                    "allMatch": [
                                      {
                                        "type": "label",
                                        "key": "env",
                                        "operator": "equals",
                                        "value": "prod"
                                      },
                                      {
                                        "type": "label",
                                        "key": "app",
                                        "operator": "exists"
                                      }
                                    ]
                                  },
                                  {
                                    "allMatch": [
                                      {
                                        "type": "annotation",
                                        "key": "meta.data",
                                        "operator": "exists"
                                      }
                                    ]
                                  }
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Cluster Aggregated Summary Costs Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/cluster/o-abcd1234/aggregatedCosts/summary"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "result": {
                                    "type": "object",
                                    "properties": {
                                      "totalForDuration": {
                                        "type": "object",
                                        "properties": {
                                          "startTime": {
                                            "type": "string",
                                            "example": "2018-06-20T11:35:01.745Z",
                                            "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                          },
                                          "endTime": {
                                            "type": "string",
                                            "example": "2018-06-22T11:30:01.745Z",
                                            "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                          },
                                          "summary": {
                                            "type": "object",
                                            "properties": {
                                              "total": {
                                                "type": "number",
                                                "example": 41772.882658035785,
                                                "description": "The total costs of cluster in a given time range"
                                              },
                                              "compute": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 40668.1299631538,
                                                    "description": "The total compute costs of the cluster in a given time range"
                                                  },
                                                  "workloads": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 39882.13803327978
                                                      }
                                                    }
                                                  },
                                                  "headroom": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 0
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "storage": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 1104.7526948819868,
                                                    "description": "The total storage costs of the cluster in given time range"
                                                  },
                                                  "block": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 1104.7526948819868
                                                      },
                                                      "ebsPv": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 1104.7526948819868
                                                          }
                                                        }
                                                      },
                                                      "nonPv": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 0
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "file": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 0
                                                      },
                                                      "efsPv": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 0
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "networking": {
                                                "type": "object",
                                                "properties": {
                                                  "totalCost": {
                                                    "type": "number",
                                                    "example": 0.00278988928,
                                                    "description": "The total costs of cluster's networking in a given time range"
                                                  },
                                                  "totalUsage": {
                                                    "type": "number",
                                                    "example": 0.03154064,
                                                    "description": "The total usages of cluster's networking in a given time range"
                                                  },
                                                  "total": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.00139494464
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.01577032
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.00139494464
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.01577032
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "internet": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "interAZ": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "intraAZ": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "interRegion": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "ocean:k8s:cluster:aggregatedCosts:summary"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/eks/cluster/{oceanClusterId}/amiAutoUpdate": {
      "put": {
        "summary": "Initiate EKS AMI Auto Update",
        "description": "Update the Ocean EKS cluster's VNGs with the latest image or the image matching the control plane's version after upgrading, by specifying ‘patch' or 'minorVersion’.\nPerforming this request will update the VNGs with new AMI if available, and run a cluster roll if set.\nIf the response is successful, the old and new AMIs will be included in the response along with the updated VNGs.\nIf a cluster roll is set in the request, the first response for a successful request will indicate the start of a roll.\nIn order to check the status of the roll, you can use the GET Roll API.\n",
        "operationId": "oceanAwsAmiAutoUpdate",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "description": "The object specifying the request to trigger an AMI auto update operation\n",
                    "title": "AMI Auto Update",
                    "properties": {
                      "amiAutoUpdate": {
                        "type": "object",
                        "properties": {
                          "patch": {
                            "type": "boolean",
                            "description": "When set to 'true', the auto-update process will update the VNGs’ images with the latest security patches. Either \"patch\" or \"minorVersion\" must be true.\n",
                            "example": true,
                            "default": false
                          },
                          "minorVersion": {
                            "type": "boolean",
                            "example": true,
                            "default": false,
                            "description": "When set to 'true', the auto-update process will update the VNGs’ AMI with the AMI to match the Kubernetes control plane version. Either \"patch\" or \"minorVersion\" must be true.\n"
                          },
                          "applyRoll": {
                            "type": "boolean",
                            "example": true,
                            "default": false,
                            "description": "This parameter is optional. When the AMI is updated according to the configuration set, a cluster roll can be triggered.\n"
                          },
                          "clusterRoll": {
                            "type": "object",
                            "description": "Cluster roll configuration.",
                            "properties": {
                              "batchSizePercentage": {
                                "type": "integer",
                                "description": "Value as a percent to set the size of a batch in a roll. Valid values are 0-100.",
                                "example": 20
                              },
                              "batchMinHealthyPercentage": {
                                "type": "integer",
                                "description": "Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.",
                                "example": 100,
                                "minimum": 1,
                                "maximum": 100,
                                "default": 50
                              },
                              "comment": {
                                "type": "string",
                                "description": "Add a brief description for the roll. The comment is limited to 256 chars.\n",
                                "example": "This is why I rolled my cluster."
                              },
                              "respectPdb": {
                                "type": "boolean",
                                "description": "During the roll, if the parameter is set to true we honor PDB during the instance replacement.\n",
                                "example": true,
                                "default": false
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "EKS AMI Auto Update Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/eks/cluster/o-abcd1234/amiAutoUpdate"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "Response indicating AMI updated for each cluster's Virtual Node Groups\n",
                                "title": "AMI Auto Update Response",
                                "properties": {
                                  "oceanId": {
                                    "type": "string",
                                    "readOnly": true,
                                    "example": "o-134abcd",
                                    "description": "Ocean cluster identifier.\n"
                                  },
                                  "status": {
                                    "type": "string",
                                    "description": "Ami update result.\n",
                                    "enum": [
                                      "Success",
                                      "Failed"
                                    ]
                                  },
                                  "data": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "description": "Virtual Node Group AMI auto update details\n",
                                      "properties": {
                                        "vngId": {
                                          "type": "string",
                                          "readOnly": true,
                                          "example": "default",
                                          "description": "The Virtual Node Group Identifier.\n"
                                        },
                                        "vngName": {
                                          "type": "string",
                                          "readOnly": true,
                                          "example": "default",
                                          "description": "The Virtual Node Group name.\n"
                                        },
                                        "status": {
                                          "type": "string",
                                          "readOnly": true,
                                          "example": "UPDATE_SUCCEEDED",
                                          "description": "The AMI update result.\n",
                                          "enum": [
                                            "NO_UPDATE_REQUIRED",
                                            "UPDATE_SUCCEEDED",
                                            "UPDATE_REQUIRED_BUT_FAILED",
                                            "FAILED"
                                          ]
                                        },
                                        "updateType": {
                                          "type": "string",
                                          "readOnly": true,
                                          "example": "MINOR",
                                          "description": "Virtual Node Group's AMI update type.\n",
                                          "enum": [
                                            "MINOR",
                                            "PATCH"
                                          ]
                                        },
                                        "oldAmiId": {
                                          "type": "string",
                                          "readOnly": true,
                                          "example": "ami-00cd348996bfd7ba8",
                                          "description": "The ID of the old AMI that was replaced.\n"
                                        },
                                        "newAmiId": {
                                          "type": "string",
                                          "readOnly": true,
                                          "example": "ami-019e5b81636e5a350",
                                          "description": "The ID of the new AMI that is being used for the VNG.\n"
                                        }
                                      }
                                    }
                                  },
                                  "rollId": {
                                    "type": "string",
                                    "readOnly": true,
                                    "example": "scr-752331b9",
                                    "description": "The ID of the triggered cluster roll.\n"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "example": "2024-01-02T09:57:09.211Z",
                                    "description": "The AMI update method was triggered at this time.\n"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "example": "2024-01-02T09:57:09.211Z",
                                    "description": "The AMI update method was triggered at this time.    \n  \n"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "ocean:k8s:cluster:amiAutoUpdate:summary"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/launchSpec": {
      "post": {
        "summary": "Create Virtual Node Group",
        "description": "Create a Virtual Node Group.\n",
        "operationId": "OceanAWSLaunchSpecCreate",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "initialNodes",
            "example": 1,
            "description": "When set to an integer greater than 0, a corresponding number of nodes will be launched from the  virtual node group created.\n",
            "schema": {
              "type": "integer",
              "default": null
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "launchSpec"
                    ],
                    "properties": {
                      "launchSpec": {
                        "allOf": [
                          {
                            "type": "object",
                            "description": "AWS Cluster Virtual Node Group (VNG).\n",
                            "required": [
                              "oceanId"
                            ],
                            "properties": {
                              "id": {
                                "type": "string",
                                "readOnly": true,
                                "example": "ols-12345abc",
                                "description": "The virtual node group identifier.\n"
                              },
                              "oceanId": {
                                "type": "string",
                                "example": "o-abcd1234",
                                "description": "The Ocean cluster identifier. Required for Virtual Node Group creation.\n"
                              },
                              "createdAt": {
                                "type": "string",
                                "readOnly": true,
                                "format": "date-time",
                                "example": "2021-03-17T08:13:08.000Z",
                                "description": "A timestamp of the VNG creation.\n"
                              },
                              "updatedAt": {
                                "type": "string",
                                "readOnly": true,
                                "format": "date-time",
                                "example": "2021-03-17T15:06:13.000Z",
                                "description": "A timestamp of the latest VNG update.\n"
                              }
                            }
                          },
                          {
                            "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec"
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/launchSpec"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec/post/requestBody/content/application~1json/schema/allOf/0/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Virtual Node Groups",
        "description": "List the configurations of all virtual node groups for the cluster.\n",
        "operationId": "OceanAWSLaunchSpecList",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "oceanId",
            "example": "o-12345abc",
            "description": "Identifier of the Ocean cluster.\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/launchSpec"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec/post/requestBody/content/application~1json/schema/allOf/0/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/launchSpec/{launchSpecId}": {
      "delete": {
        "summary": "Delete Virtual Node Group",
        "description": "Delete a specified Virtual Node Group in an Ocean cluster.\n",
        "operationId": "OceanAWSLaunchSpecDelete",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          },
          {
            "in": "query",
            "name": "deleteNodes",
            "example": true,
            "description": "When set to \"true\", all instances belonging to the deleted Virtual Node Group will be drained, detached, and terminated.\n",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "in": "query",
            "name": "forceDelete",
            "example": true,
            "description": "When set to \"true\", delete even if it is the only custom Virtual Node Group remaining, and default Virtual Node Group has useAsTemlateOnly = true.\n",
            "schema": {
              "type": "boolean",
              "default": null
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Delete Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/launchSpec/ols-12345abc"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Virtual Node Group",
        "description": "Update Virtual Node Group.\n",
        "operationId": "OceanAWSLaunchSpecUpdate",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          },
          {
            "in": "query",
            "name": "autoApplyTags",
            "example": true,
            "description": "Optionally update resource tags on the fly without performing a roll.\n",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "launchSpec"
                ],
                "properties": {
                  "launchSpec": {
                    "type": "object",
                    "description": "AWS Cluster Virtual Node Group (VNG).\n",
                    "properties": {
                      "name": {
                        "type": "string",
                        "example": "specialty.nodes.spotk8s.com",
                        "description": "Set Virtual Node Group name.\n"
                      },
                      "imageId": {
                        "type": "string",
                        "example": "ami-ID",
                        "description": "Set image identifier. Can be null.\n"
                      },
                      "images": {
                        "type": "array",
                        "description": "An array of image objects. <br>\n* You can configure VNG with either the imageId or images objects, but not both simultaneously.\n* For each architecture type (amd64, arm64) only one AMI is allowed.\n* Valid values: null, or an array with at least one element\n",
                        "items": {
                          "type": "object",
                          "title": "Image object, containing the id of the image used to launch instances.",
                          "required": [
                            "id"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Identifier of the image in AWS. Valid values: any string which is not empty or null.\n",
                              "example": "ami-ID"
                            }
                          }
                        }
                      },
                      "userData": {
                        "type": "string",
                        "example": "dsa89d7uosduxq98sau9s8aux9s8aux09q0qu09axsuix0s9qas09xz",
                        "description": "Set user data script in base 64 encoded MIME.\n"
                      },
                      "iamInstanceProfile": {
                        "type": "object",
                        "title": "auto-scaler",
                        "description": "The instance profile iamRole object.\n",
                        "properties": {
                          "arn": {
                            "type": "string",
                            "example": "arn:aws:iam::123456781234:instance-profile/EKS-nodes-test-NodeInstanceProfile-ABCDEFGH123",
                            "description": "The iamRole ARN. If set, do not set launchSpec.iamInstanceProfile.name\n"
                          },
                          "name": {
                            "type": "string",
                            "description": "The iamRole name. If set, do not set launchSpec.iamInstanceProfile.arn\n",
                            "example": "EKS-nodes-test"
                          }
                        }
                      },
                      "securityGroupIds": {
                        "type": "array",
                        "description": "Set security groups. Each element in the array is a security group identifier.\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "sg-0ded3a2980208c30c",
                          "sg-0ded3a2980208c30d"
                        ]
                      },
                      "instanceTypes": {
                        "type": "array",
                        "description": "A list of instance types allowed to be provisioned for pods pending for the Virtual Node Group.\\\nThe list overrides the list defined for the Ocean cluster. Can be null.\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "c3.2xlarge",
                          "c4.2xlarge"
                        ]
                      },
                      "instanceTypesFilters": {
                        "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec~1%7BlaunchSpecId%7D~1instanceTypeFiltersSimulation/post/requestBody/content/application~1json/schema/allOf/0/properties/instanceTypesFilters"
                      },
                      "preferredOnDemandTypes": {
                        "type": "array",
                        "description": "When Ocean scales up instances, it takes your preferred types into consideration while maintaining a variety of machine types running for optimized distribution.\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "c3.large",
                          "m4.xlarge"
                        ]
                      },
                      "preferredSpotTypes": {
                        "type": "array",
                        "description": "When Ocean scales up instances, it takes your preferred types into consideration while maintaining a variety of machine types running for optimized distribution. [Learn More](https://docs.flexera.com/spot/ocean/features/vngs/attributes-and-actions-per-vng?id=preferred-spot-instance-types-per-vng)\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "c3.2xlarge",
                          "c4.2xlarge"
                        ]
                      },
                      "rootVolumeSize": {
                        "type": "integer",
                        "description": "Set root volume size (in GB). This field and blockDeviceMappings cannot be used in the same specification.\n",
                        "example": 8
                      },
                      "reservedENIs": {
                        "type": "integer",
                        "description": "Specifies the count of ENIs to reserve per instance type for scaling purposes.\n",
                        "default": 0,
                        "example": 1
                      },
                      "labels": {
                        "type": "array",
                        "description": "An array of labels to add to the VNG nodes. Only custom user labels are allowed,\nand not Kubernetes built-in labels or Spot internal labels.\n",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "type": "string",
                              "description": "Set label key.\\\nThe following are not allowed:\n* \"kubernetes.io/hostname\"\n* \"failure-domain.beta.kubernetes.io/zone\"\n* \"topology.kubernetes.io/zone\"\n* \"failure-domain.beta.kubernetes.io/region\"\n* \"topology.kubernetes.io/region\"\n* \"beta.kubernetes.io/instance-type\"\n* \"node.kubernetes.io/instance-type\"\n* \"beta.kubernetes.io/os\"\n* \"kubernetes.io/os\"\n* \"beta.kubernetes.io/arch\"\n* \"kubernetes.io/arch\"\n* \"spotinst.io/node-lifecycle\"'\n"
                            },
                            "value": {
                              "type": "string",
                              "description": "Set label value.\n"
                            }
                          }
                        },
                        "example": [
                          {
                            "key": "env",
                            "value": "test"
                          }
                        ]
                      },
                      "taints": {
                        "type": "array",
                        "description": "Add taints to Virtual Node Group.\n",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "type": "string",
                              "description": "Set taint key.\n"
                            },
                            "value": {
                              "type": "string",
                              "description": "Set taint value.\n"
                            },
                            "effect": {
                              "type": "string",
                              "description": "Set taint effect.\n"
                            }
                          }
                        },
                        "example": [
                          {
                            "key": "taintKey",
                            "value": "taintValue",
                            "effect": "NoSchedule"
                          }
                        ]
                      },
                      "subnetIds": {
                        "type": "array",
                        "description": "Set subnets in Virtual Node Group. Each element in the array is a subnet identifier.\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "subnet-123",
                          "subnet-456"
                        ]
                      },
                      "elasticIpPool": {
                        "type": "object",
                        "description": "Assign an Elastic IP to the instances launched by the Virtual Node Group. Can be null.\n",
                        "properties": {
                          "tagSelector": {
                            "type": "object",
                            "required": [
                              "tagKey"
                            ],
                            "description": "Key-value object, which defines an Elastic IP from the customer pool. Can be null.\n",
                            "properties": {
                              "tagKey": {
                                "type": "string",
                                "description": "Elastic IP tag key. The Virtual Node Group will consider all elastic IPs tagged with this tag as a part of the elastic IP pool to use.\n",
                                "example": "color"
                              },
                              "tagValue": {
                                "type": "string",
                                "description": "Elastic IP tag value. Can be null.\n",
                                "example": "orange"
                              }
                            }
                          }
                        }
                      },
                      "autoScale": {
                        "type": "object",
                        "description": "Object specifying the automatic scaling of an Ocean VNG.\n",
                        "properties": {
                          "headrooms": {
                            "description": "Specify the custom headroom per VNG. Provide a list of headroom objects.\n",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "cpuPerUnit": {
                                  "description": "Configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n",
                                  "type": "integer",
                                  "example": 1024
                                },
                                "memoryPerUnit": {
                                  "description": "Configure the amount of memory (MiB) to allocate the headroom.\n",
                                  "type": "integer",
                                  "example": 512
                                },
                                "numOfUnits": {
                                  "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                  "type": "integer",
                                  "example": 2
                                },
                                "gpuPerUnit": {
                                  "type": "integer",
                                  "description": "Amont of GPU to allocate for headroom unit.\n",
                                  "example": 0
                                }
                              }
                            }
                          },
                          "autoHeadroomPercentage": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 200,
                            "description": "Control the headroom % of the specific Virtual Node Group. Effective when cluster.autoScaler.isAutoConfig=true is set on the Ocean cluster.\n",
                            "example": 20
                          },
                          "down": {
                            "type": "object",
                            "description": "Autoscaling scale down operations.\n",
                            "properties": {
                              "maxScaleDownPercentage": {
                                "type": "number",
                                "format": "double",
                                "minimum": 0.1,
                                "maximum": 100,
                                "description": "The maximum percentage allowed to scale down in a single scaling action on the nodes running in a specific VNG. Allowed only if maxScaleDownPercentage is set to null at the cluster level.\n",
                                "example": 30
                              },
                              "aggressiveScaleDown": {
                                "type": "object",
                                "description": "Enable and configure the Accelerated Scale Down feature to allow the Ocean autoscaler to immediately scale down eligible nodes without any waiting period.",
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "description": "When set to 'true', Accelerated Scale Down is enabled.",
                                    "default": false
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "tags": {
                        "type": "array",
                        "description": "List of kay-value pairs of tags.\n",
                        "items": {
                          "type": "object",
                          "properties": {
                            "tagKey": {
                              "type": "string",
                              "description": "Set the tag key.\n",
                              "example": "Creator"
                            },
                            "tagValue": {
                              "type": "string",
                              "description": "Set the tag value.\n",
                              "example": "John Doe"
                            }
                          }
                        }
                      },
                      "blockDeviceMappings": {
                        "type": "array",
                        "description": "Block devices that are exposed to the instance. You can specify virtual devices and EBS volumes.\\\nThis parameter and rootVolumeSize cannot be in the spec at the same time.\\\nThis parameter can be null, but if not null, it must contain at least one block device.\n",
                        "items": {
                          "type": "object",
                          "properties": {
                            "deviceName": {
                              "type": "string",
                              "description": "Set device name.\n",
                              "example": "/dev/xvda"
                            },
                            "ebs": {
                              "type": "object",
                              "description": "Set EBS properties.\n",
                              "properties": {
                                "throughput": {
                                  "type": "integer",
                                  "minimum": 125,
                                  "maximum": 1000,
                                  "example": 125,
                                  "description": "The amount of data transferred to or from a storage device per second. You can use this parameter only if volumetype=‘gp3’.\n"
                                },
                                "deleteOnTermination": {
                                  "type": "boolean",
                                  "description": "Flag to delete the EBS on instance termination.\n",
                                  "example": false
                                },
                                "encrypted": {
                                  "type": "boolean",
                                  "example": false
                                },
                                "iops": {
                                  "type": "integer",
                                  "description": "Must be greater than or equal to 0.\n",
                                  "example": 1
                                },
                                "dynamicIops": {
                                  "type": "object",
                                  "required": [
                                    "baseSize",
                                    "resource",
                                    "sizePerResourceUnit"
                                  ],
                                  "description": "Set dynamic IOPS properties. When using this object, you cannot use the `iops` property. You must use one or the other.\nWhen `dynamicIops` is configured, the `volumeType` field must also be set.\n",
                                  "properties": {
                                    "baseSize": {
                                      "type": "integer",
                                      "description": "Initial size for IOPS.\n",
                                      "example": 50
                                    },
                                    "resource": {
                                      "type": "string",
                                      "enum": [
                                        "CPU",
                                        "memory"
                                      ],
                                      "description": "Selects which resource is used to calculate the dynamic IOPS (CPU or memory).\n",
                                      "example": "CPU"
                                    },
                                    "sizePerResourceUnit": {
                                      "type": "integer",
                                      "description": "Additional size per resource unit (in IOPS).\nFor example: if baseSize=50, and sizePerResourceUnit=20, and an instance with 2 CPU is launched,\nits IOPS size will be 90.\n",
                                      "example": 20
                                    }
                                  }
                                },
                                "kmsKeyId": {
                                  "type": "string",
                                  "example": "alias/aws/ebs"
                                },
                                "snapshotId": {
                                  "type": "string",
                                  "example": "snap-abcdefghi111110"
                                },
                                "volumeType": {
                                  "type": "string",
                                  "description": "Specifies the EBS volume type. This field is required when either `dynamicIops` or `dynamicVolumeSize` is configured.\n",
                                  "enum": [
                                    "standard",
                                    "io1",
                                    "io2",
                                    "gp2",
                                    "gp3",
                                    "st1",
                                    "sc1"
                                  ],
                                  "example": "gp2"
                                },
                                "volumeSize": {
                                  "type": "integer",
                                  "description": "Set volume size (in GB). When using this property, you cannot use dynamicVolumeSize.\\\nYou must use one or the other. Volume size should be greater than or equal to the size configured in the AMI.\n"
                                },
                                "dynamicVolumeSize": {
                                  "type": "object",
                                  "required": [
                                    "baseSize",
                                    "resource",
                                    "sizePerResourceUnit"
                                  ],
                                  "description": "Set dynamic volume size properties. When using this object, you cannot use volumeSize.\\\nYou must use one or the other. When `dynamicVolumeSize` is configured, the `volumeType` field must also be set.\n",
                                  "properties": {
                                    "baseSize": {
                                      "type": "integer",
                                      "description": "Initial size per volume.\n",
                                      "example": 50
                                    },
                                    "resource": {
                                      "type": "string",
                                      "example": "CPU"
                                    },
                                    "sizePerResourceUnit": {
                                      "type": "integer",
                                      "description": "Additional size per resource unit (in GB).\\\nFor example: if baseSize=50, and sizePerResourceUnit=20, and an instance with 2 CPU is launched, its disk size will be 90 GB.\n",
                                      "example": 20
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "ephemeralStorage": {
                        "type": "object",
                        "properties": {
                          "deviceName": {
                            "type": "string",
                            "description": "Specify an alternative device name from which ephemeral storage calculations should be derived.\nThis parameter is used when the ephemeral storage should not utilize the root device.\nProvide the device name configured in the VNG's BDM or AMI's BDM that differs from the default root device.\n",
                            "example": "/dev/xvdb"
                          }
                        }
                      },
                      "resourceLimits": {
                        "type": "object",
                        "properties": {
                          "maxInstanceCount": {
                            "description": "Option to set a maximum number of instances per Virtual Node Group.\\\nCan be null. If set, value must be greater than or equal to 0.\n",
                            "type": "integer",
                            "example": 5
                          },
                          "minInstanceCount": {
                            "description": "Option to set a minimum number of instances per Virtual Node Group.\\\nCan be null. If set, value must be greater than or equal to 0.\n",
                            "type": "integer",
                            "example": 2
                          }
                        }
                      },
                      "strategy": {
                        "type": "object",
                        "description": "Similar to a strategy for an Ocean cluster, but applying only to a virtual node group.\n",
                        "properties": {
                          "spotPercentage": {
                            "type": "integer",
                            "description": "The desired percentage of the Spot instances out of all running instances for this VNG.\\\nOnly available when the field is **not** set in the cluster directly (cluster.strategy.spotPercentage).\n",
                            "minimum": 0,
                            "maximum": 100,
                            "example": 70,
                            "default": 100
                          },
                          "utilizeReservedInstances": {
                            "type": "boolean",
                            "default": true,
                            "example": true,
                            "description": "When set as ‘true’, if reserved instances exist, Ocean will utilize them before launching spot instances. \nIf the value is set as 'null', it will automatically be inherited from the cluster level.\n"
                          },
                          "utilizeCommitments": {
                            "type": "boolean",
                            "description": "When set as ‘true’, if savings plans commitments have available capacity, Ocean will utilize them alongside RIs (if exist) to maximize cost efficiency. \nIf the value is set as 'null', it will automatically be inherited from the cluster level.\n",
                            "example": false,
                            "default": false
                          },
                          "drainingTimeout": {
                            "type": "integer",
                            "description": "The configurable amount of time that Ocean will wait for the draining process to complete before terminating an instance. \nIf you have not defined a draining timeout, the default of 300 seconds will be used.\n",
                            "minimum": 300,
                            "example": 300,
                            "default": 300
                          },
                          "orientation": {
                            "type": "object",
                            "properties": {
                              "availabilityVsCost": {
                                "type": "string",
                                "description": "Set this value to control the approach that Ocean takes while launching nodes.\n",
                                "enum": [
                                  "costOriented",
                                  "balanced",
                                  "cheapest"
                                ],
                                "example": "balanced",
                                "default": "balanced"
                              }
                            }
                          }
                        }
                      },
                      "associatePublicIpAddress": {
                        "type": "boolean",
                        "description": "Configure public IP address allocation.\n",
                        "default": false,
                        "example": false
                      },
                      "restrictScaleDown": {
                        "type": "boolean",
                        "description": "When set to “True”, VNG nodes will be treated as if all pods running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints).\nTherefore, Ocean will not scale nodes down unless empty.\n",
                        "example": false
                      },
                      "scheduling": {
                        "type": "object",
                        "description": "An object used to define scheduled tasks such as a manual headroom update.\n",
                        "title": "Ocean Scheduling",
                        "properties": {
                          "tasks": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "title": "Task Definition",
                              "required": [
                                "isEnabled",
                                "cronExpression",
                                "taskType"
                              ],
                              "properties": {
                                "isEnabled": {
                                  "type": "boolean",
                                  "example": true,
                                  "description": "Describes whether the task is enabled. When True, the task runs. When False, it does not run. Required for launchSpec.scheduling.tasks. In case automatic headroom is configured, please make sure to set autoScaler.enableAutomaticAndManualHeadroom on Ocean level to true in order to make sure that the manual headroom would be affective.\n"
                                },
                                "cronExpression": {
                                  "type": "string",
                                  "example": "0 1 * * *",
                                  "description": "A valid cron expression. For example : \" * * * * * \". The cron job runs in UTC time and is in Unix cron format. (See the Cron Expression Validator Script.)\n"
                                },
                                "taskType": {
                                  "type": "string",
                                  "example": "manualHeadroomUpdate",
                                  "enum": [
                                    "manualHeadroomUpdate"
                                  ],
                                  "description": "The activity that you are scheduling. Valid values: \"manualHeadroomUpdate\". Required for launchSpec.scheduling.tasks.\n"
                                },
                                "config": {
                                  "description": "The config of this scheduled task. Depends on the value of `taskType`.",
                                  "oneOf": [
                                    {
                                      "type": "object",
                                      "title": "manualHeadroomUpdate",
                                      "required": [
                                        "headrooms"
                                      ],
                                      "properties": {
                                        "headrooms": {
                                          "description": "Set custom headroom per VNG. Provide a list of launchSpec.autoscale.headroom objects.\n",
                                          "type": "array",
                                          "items": {
                                            "type": "object",
                                            "properties": {
                                              "cpuPerUnit": {
                                                "description": "Configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n",
                                                "type": "integer"
                                              },
                                              "memoryPerUnit": {
                                                "description": "Configure the amount of memory (MiB) to allocate the headroom.\n",
                                                "type": "integer"
                                              },
                                              "numOfUnits": {
                                                "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                                "type": "integer"
                                              },
                                              "gpuPerUnit": {
                                                "type": "integer",
                                                "description": "Amont of GPU to allocate for headroom unit.\n"
                                              }
                                            }
                                          },
                                          "example": [
                                            {
                                              "cpuPerUnit": 1024,
                                              "memoryPerUnit": 512,
                                              "numOfUnits": 2,
                                              "gpuPerUnit": 1
                                            }
                                          ]
                                        }
                                      }
                                    }
                                  ]
                                }
                              }
                            }
                          },
                          "shutdownHours": {
                            "type": "object",
                            "title": "Shutdown Hours",
                            "description": "An object used to specify times that the nodes in the virtual node group will be taken down.\n",
                            "required": [
                              "timeWindows"
                            ],
                            "properties": {
                              "timeWindows": {
                                "type": "array",
                                "description": "The times that the shutdown hours will apply.\n",
                                "items": {
                                  "type": "string",
                                  "example": "Sat:08:00-Sun:08:00"
                                }
                              },
                              "isEnabled": {
                                "type": "boolean",
                                "example": true,
                                "description": "Flag to enable or disable the shutdown hours mechanism. When False, the mechanism is deactivated, and the virtual node group remains in its current state.\n"
                              }
                            }
                          },
                          "optimizationWindows": {
                            "type": "object",
                            "description": "An object used to specify time windows during which certain optimization constraints can be eased.\n",
                            "title": "Optimization Windows",
                            "required": [
                              "isEnabled"
                            ],
                            "properties": {
                              "isEnabled": {
                                "type": "boolean",
                                "example": true,
                                "description": "Used to enable or disable the optimization windows mechanism. Must be a boolean (null is invalid). When true, at least one window must be defined. When false, windows can be empty or omitted.\n"
                              },
                              "windows": {
                                "type": "array",
                                "description": "The times when the optimization windows will apply. Required if isEnabled is true.\n",
                                "items": {
                                  "type": "object",
                                  "title": "Optimization Window Definition",
                                  "required": [
                                    "cronExpression",
                                    "duration",
                                    "effects"
                                  ],
                                  "properties": {
                                    "cronExpression": {
                                      "type": "string",
                                      "example": "0 0 * * *",
                                      "description": "A valid cron expression defining when the optimization window starts. For example: \"0 0 * * *\" (daily at midnight). The cron job runs in UTC time and follows Unix cron format.\n"
                                    },
                                    "duration": {
                                      "type": "string",
                                      "example": "8h",
                                      "description": "The duration of the optimization window. Must be in the format <number><unit> where unit is 'm' (minutes), 'h' (hours), or 'd' (days). Examples: 10m, 5h, 2d.\n"
                                    },
                                    "effects": {
                                      "type": "array",
                                      "minItems": 1,
                                      "description": "The list of effects that will be applied during this optimization window.\n",
                                      "items": {
                                        "type": "string",
                                        "enum": [
                                          "ignorePdb",
                                          "ignoreRestrictScaleDown"
                                        ]
                                      },
                                      "example": [
                                        "ignorePdb",
                                        "ignoreRestrictScaleDown"
                                      ]
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "instanceMetadataOptions": {
                        "type": "object",
                        "title": "instanceMetadataOptions",
                        "required": [
                          "httpTokens"
                        ],
                        "description": "Ocean instance metadata options object for [IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html).\n",
                        "properties": {
                          "httpTokens": {
                            "type": "string",
                            "description": "Determines if a signed token is required or not.\n",
                            "enum": [
                              "optional",
                              "required"
                            ],
                            "example": "optional"
                          },
                          "httpPutResponseHopLimit": {
                            "type": "integer",
                            "description": "An integer within 1,64 range (including).\nThe desired HTTP PUT response hop limit for instance metadata requests.\nThe larger the number, the further instance metadata requests can travel.\n",
                            "example": 12
                          }
                        }
                      },
                      "startupTaints": {
                        "type": "array",
                        "description": "Temporary taints applied to a node during its initialization phase. \nFor a startup taint to work, it must also be set as a regular taint\nin the userData for the VNG.\n",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "type": "string",
                              "description": "Set startup taint key.\n"
                            },
                            "value": {
                              "type": "string",
                              "description": "Set startup taint value.\n"
                            },
                            "effect": {
                              "type": "string",
                              "description": "Set startup taint effect.\n"
                            }
                          }
                        },
                        "example": [
                          {
                            "key": "node.cilium.io/agent-not-ready",
                            "value": true,
                            "effect": "NoSchedule"
                          }
                        ]
                      },
                      "instanceStorePolicy": {
                        "type": "object",
                        "description": "Determines the utilization of instance store volumes. If not defined, instance store volumes will not be used.",
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "The method for using the instance store volumes (**must also be defined in the userData**).\n",
                            "enum": [
                              "RAID0"
                            ],
                            "example": "RAID0"
                          }
                        }
                      },
                      "gpu": {
                        "type": "object",
                        "description": "GPU configuration",
                        "properties": {
                          "sharing": {
                            "type": "array",
                            "maximum": 1,
                            "description": "List of configurations for GPU sharing. You can get up to 1 configuration.\n",
                            "items": {
                              "type": "object",
                              "properties": {
                                "gpuSharingType": {
                                  "type": "string",
                                  "enum": [
                                    "timeSlicing"
                                  ],
                                  "description": "Type of GPU sharing.\n",
                                  "example": "timeSlicing"
                                },
                                "config": {
                                  "type": "object",
                                  "properties": {
                                    "replicas": {
                                      "minimum": 1,
                                      "type": "integer",
                                      "description": "Number of shared replicas for the GPU sharing configuration.\n",
                                      "example": 2
                                    }
                                  }
                                }
                              }
                            }
                          }
                        },
                        "example": {
                          "sharing": [
                            {
                              "gpuSharingType": "timeSlicing",
                              "config": {
                                "replicas": 2
                              }
                            }
                          ]
                        }
                      },
                      "loadBalancers": {
                        "type": "array",
                        "description": "Configure load balancer settings for the VNG.\n",
                        "items": {
                          "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1loadBalancer~1attach/put/requestBody/content/application~1json/schema/properties/loadBalancers/items"
                        },
                        "example": {
                          "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1loadBalancer~1attach/put/requestBody/content/application~1json/schema/properties/loadBalancers/example"
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/launchSpec/ols-12345abc"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec/post/requestBody/content/application~1json/schema/allOf/0/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Virtual Node Group",
        "operationId": "OceanAWSLaunchSpecGet",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/launchSpec/ols-12345abc"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec/post/requestBody/content/application~1json/schema/allOf/0/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/launchSpec/{launchSpecId}/loadBalancer/attach": {
      "put": {
        "summary": "Attach Virtual Node Group Load Balancers",
        "description": "Add new load balancers to the existing ones on the Ocean Cluster Virtual Node Group (VNG).\n",
        "operationId": "OceanAWSClusterLaunchSpecAttachLb",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "loadBalancers"
                ],
                "properties": {
                  "loadBalancers": {
                    "type": "array",
                    "description": "Load balancers to add to the Ocean Cluster VNG.\n",
                    "items": {
                      "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1loadBalancer~1attach/put/requestBody/content/application~1json/schema/properties/loadBalancers/items"
                    },
                    "example": {
                      "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1loadBalancer~1attach/put/requestBody/content/application~1json/schema/properties/loadBalancers/example"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/launchSpec/ols-12345abc/loadBalancer/attach"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/launchSpec/{launchSpecId}/loadBalancer/detach": {
      "put": {
        "summary": "Detach Virtual Node Group Load Balancers",
        "description": "Remove load balancers from the existing ones on the Ocean Cluster Virtual Node Group (VNG).\n",
        "operationId": "OceanAWSClusterLaunchSpecDetachLb",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "loadBalancers"
                ],
                "properties": {
                  "loadBalancers": {
                    "type": "array",
                    "description": "Load balancers to remove from the Ocean Cluster VNG.\n",
                    "items": {
                      "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1loadBalancer~1attach/put/requestBody/content/application~1json/schema/properties/loadBalancers/items"
                    },
                    "example": {
                      "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1loadBalancer~1attach/put/requestBody/content/application~1json/schema/properties/loadBalancers/example"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/launchSpec/ols-12345abc/loadBalancer/detach"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/launchSpec/{launchSpecId}/instanceTypeFiltersSimulation": {
      "post": {
        "summary": "Instance Types Filters Simulation For Virtual Node Group",
        "description": "Returns all instance types that match the given filters. These instance types will be used if the Virtual Node Group is configured with these filters.\n",
        "operationId": "oceanAwsInstanceTypeFiltersSimulationForVng",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "instanceTypesFilters"
                    ],
                    "properties": {
                      "instanceTypesFilters": {
                        "type": "object",
                        "description": "List of instance types filters. The instance types that match with all filters compose the Virtual Node Group's instanceTypes parameter.\\\nThe architectures that come from the Virtual Node Group's images will be taken into account when using this parameter.\\\nCannot be configured together with Virtual Node Group's instanceTypes and with the Cluster's whitelist/blacklist/filters.\n",
                        "title": "InstanceTypesFilters",
                        "properties": {
                          "minVcpu": {
                            "type": "integer",
                            "description": "Minimum number of vcpus available.\n",
                            "minimum": 0,
                            "example": 2
                          },
                          "maxVcpu": {
                            "type": "integer",
                            "description": "Maximum number of vcpus available.\n",
                            "minimum": 1,
                            "example": 16
                          },
                          "minMemoryGiB": {
                            "type": "number",
                            "description": "Minimum amount of Memory (GiB).\n",
                            "minimum": 0,
                            "example": 8
                          },
                          "maxMemoryGiB": {
                            "type": "number",
                            "description": "Maximum amount of Memory (GiB).\n",
                            "minimum": 0,
                            "example": 16
                          },
                          "minGpu": {
                            "type": "integer",
                            "description": "Minimum total number of GPUs.\n",
                            "minimum": 0,
                            "example": 0
                          },
                          "maxGpu": {
                            "type": "integer",
                            "description": "Maximum total number of GPUs.\n",
                            "minimum": 1,
                            "example": 4
                          },
                          "includeFamilies": {
                            "type": "array",
                            "description": "Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported). For example, C* will include instance types from these families: c5, c4, c4a, etc.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "c5*",
                              "g5"
                            ]
                          },
                          "excludeFamilies": {
                            "type": "array",
                            "description": "Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported). For example, C* will exclude instance types from these families: c5, c4, c4a, etc.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "t2",
                              "R4*"
                            ]
                          },
                          "excludeMetal": {
                            "type": "boolean",
                            "default": false,
                            "description": "In case excludeMetal is set to true, metal types will not be available for scaling.\n",
                            "example": true
                          },
                          "isEnaSupported": {
                            "type": "boolean",
                            "description": "Ena is supported or not.\n",
                            "example": true
                          },
                          "virtualizationTypes": {
                            "type": "array",
                            "description": "The filtered instance types will support at least one of the virtualization types from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "hvm",
                                "paravirtual"
                              ]
                            },
                            "example": [
                              "hvm"
                            ]
                          },
                          "categories": {
                            "type": "array",
                            "description": "The filtered instance types will belong to one of the categories types from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "Accelerated_computing",
                                "Compute_optimized",
                                "General_purpose",
                                "Memory_optimized",
                                "Storage_optimized"
                              ]
                            },
                            "example": [
                              "Accelerated_computing",
                              "Compute_optimized"
                            ]
                          },
                          "minEnis": {
                            "type": "integer",
                            "description": "Minimum number of network interfaces (ENIs).\n",
                            "minimum": 0,
                            "example": 2
                          },
                          "diskTypes": {
                            "type": "array",
                            "description": "The filtered instance types will have one of the disk type from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "NVMe",
                                "EBS",
                                "SSD",
                                "HDD"
                              ]
                            },
                            "example": [
                              "NVMe",
                              "EBS"
                            ]
                          },
                          "hypervisor": {
                            "type": "array",
                            "description": "The filtered instance types will have a hypervisor type from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "nitro",
                                "xen"
                              ]
                            },
                            "example": [
                              "nitro"
                            ]
                          },
                          "rootDeviceTypes": {
                            "type": "array",
                            "description": "The filtered instance types will have a root device types from this list.\n",
                            "items": {
                              "type": "string",
                              "enum": [
                                "ebs",
                                "instance-store"
                              ]
                            },
                            "example": [
                              "ebs"
                            ]
                          },
                          "minNetworkPerformance": {
                            "type": "integer",
                            "description": "Minimum Bandwidth in Gib/s of network performance.\n",
                            "minimum": 0,
                            "example": 2
                          },
                          "maxNetworkPerformance": {
                            "type": "integer",
                            "description": "Maximum Bandwidth in Gib/s of network performance.\n",
                            "minimum": 1,
                            "example": 20
                          },
                          "minInstancePrice": {
                            "type": "number",
                            "format": "double",
                            "description": "Minimum Price of On-Demand instance type.\n",
                            "minimum": 0,
                            "example": 2
                          },
                          "maxInstancePrice": {
                            "type": "number",
                            "format": "double",
                            "description": "Maximum Price of On-Demand instance type.\n",
                            "exclusiveMinimum": true,
                            "minimum": 0,
                            "example": 20
                          },
                          "includeGenerations": {
                            "type": "array",
                            "description": "Types belonging to a Generation from the IncludeGenerations will be available for scaling.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "6",
                              "7"
                            ]
                          },
                          "excludeGenerations": {
                            "type": "array",
                            "description": "Types Not belonging to a Generation from the ExcludeGenerations will be available for scaling.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "1",
                              "2"
                            ]
                          },
                          "encryptionInTransitSupported": {
                            "type": "boolean",
                            "description": "encryptionInTransitSupported is supported or not.\n",
                            "example": true
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Instance Types Filters Simulation For Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/launchspec/o-abcd1234/instanceTypeFiltersSimulation"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1instanceTypeFiltersSimulation/post/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:launchSpec:instanceTypesFilters:simulation"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/launchSpec/{launchSpecId}/allowedInstanceTypesByFilters": {
      "get": {
        "summary": "Allowed Instance Types By Filters For Virtual Node Group",
        "description": "Returns the Virtual Node Group's instance types when instance types filters is set.\n",
        "operationId": "oceanAwsGetAllowedInstanceTypesByFilters",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Virtual Node Group Allowed Instance Types By Filters",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/launchSpec/ols-12345abc/allowedInstanceTypesByFilters"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "instanceTypes": {
                                    "type": "array",
                                    "description": "The allowed Virtual Node Group's instance types when instance types filters is set.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "c3.large",
                                      "c5.large"
                                    ]
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:launchSpec:allowedInstanceTypesByFilters"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/launchSpec/autoScalingGroup/import": {
      "summary": "Ocean for AWS",
      "post": {
        "summary": "Import ASG To Ocean Virtual Node Group",
        "description": "Returns an Ocean Virtual Node Group (VNG) configuration in a given AWS autoscaling group (ASG). The returned value (\"Imported VNG\") can then be used as input to the Create Virtual Node Group API in order to create an actual VNG in your Ocean cluster.\n",
        "operationId": "oceanAwsImportAsgToLaunchSpec",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1autoScalingGroup~1import/post/parameters/1"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "launchSpec": {
                        "type": "object",
                        "description": "The object specifying the configuration of the VNG.\n",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Set Virtual Node Group name.\n",
                            "example": "specialty.nodes.spotk8s.com"
                          },
                          "labels": {
                            "type": "array",
                            "description": "An array of labels to add to the VNG nodes. Only custom user labels are allowed,\nand not Kubernetes built-in labels or Spot internal labels.\n",
                            "items": {
                              "type": "object",
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Set label key. \\\nThe following are not allowed:\n* \"kubernetes.io/hostname\"\n* \"failure-domain.beta.kubernetes.io/zone\"\n* \"topology.kubernetes.io/zone\"\n* \"failure-domain.beta.kubernetes.io/region\"\n* \"topology.kubernetes.io/region\"\n* \"beta.kubernetes.io/instance-type\"\n* \"node.kubernetes.io/instance-type\"\n* \"beta.kubernetes.io/os\"\n* \"kubernetes.io/os\"\n* \"beta.kubernetes.io/arch\"\n* \"kubernetes.io/arch\"\n* \"spotinst.io/node-lifecycle\"\n"
                                },
                                "value": {
                                  "type": "string",
                                  "description": "Set label value.\n"
                                }
                              }
                            },
                            "example": [
                              {
                                "key": "env",
                                "value": "test"
                              }
                            ]
                          },
                          "taints": {
                            "type": "array",
                            "description": "Add taints to Virtual Node Group.\n",
                            "items": {
                              "type": "object",
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Set taint key.\n"
                                },
                                "value": {
                                  "type": "string",
                                  "description": "Set taint value.\n"
                                },
                                "effect": {
                                  "type": "string",
                                  "description": "Set taint effect.\n",
                                  "enum": [
                                    "NoSchedule",
                                    "PreferNoSchedule",
                                    "NoExecute"
                                  ]
                                }
                              }
                            },
                            "example": [
                              {
                                "key": "taintKey",
                                "value": "taintValue",
                                "effect": "NoSchedule"
                              }
                            ]
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Import ASG to Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/launchSpec/autoScalingGroup/import"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "Ocean Import ASG to Virtual Node Group Response.\n",
                                "properties": {
                                  "oceanId": {
                                    "type": "string",
                                    "example": "o-500a5d5a"
                                  },
                                  "name": {
                                    "type": "string",
                                    "example": "TestTeam1"
                                  },
                                  "imageId": {
                                    "type": "string",
                                    "example": "ami-0ce21b51cb55a48b8"
                                  },
                                  "securityGroupIds": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "sg-03ccf232a2bf0f4ea"
                                      ]
                                    }
                                  },
                                  "tags": {
                                    "type": "object",
                                    "properties": {
                                      "tagKey": {
                                        "type": "string",
                                        "example": "AmazonECSManaged"
                                      },
                                      "tagValue": {
                                        "type": "string",
                                        "example": ""
                                      }
                                    }
                                  },
                                  "instanceMetadataOptions": {
                                    "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec/properties/instanceMetadataOptions"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/launchSpec/eksNodeGroup/import": {
      "summary": "Ocean for EKS",
      "post": {
        "summary": "Import EKS Cluster Node Group To Ocean Virtual Node Group",
        "description": "<ul> <li> Returns an Ocean Virtual Node Group (VNG) configuration based on a given AWS EKS Cluster Node Group.\n     The returned value (\"Imported VNG\") can then be used as input to the Create Virtual Node Group API in order to create an actual VNG in your Ocean cluster.</li>\n<li> Notes: <ul>\n            <li> Make sure to have the necessary permissions in your Spot policy: <b>eks:ListNodegroups, eks:DescribeNodegroup</b>.\n                 <a href=\"https://docs.flexera.com/spot/administration/api/spot-policy-in-aws?id=spot-policy-in-aws\">Click here for the full Spot policy.</a></li>\n            <li> <b>Exactly one of region or oceanId must be supplied</b> as query parameters.</li>\n            <ul>\n</li> <ul>\n",
        "operationId": "oceanEksImportNodeGroupToLaunchSpec",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "eksClusterName",
            "example": "MyEksCluster",
            "description": "Cluster name of the EKS cluster.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "eksNodeGroupName",
            "example": "MyEksClusterNodeGroup",
            "description": "Node group name to import.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "region",
            "example": "us-east-1",
            "description": "Region name of the EKS cluster's node group.\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec/get/parameters/1"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "launchSpec": {
                        "type": "object",
                        "description": "The object specifying the configuration of the VNG.\n",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Set Virtual Node Group name.\n",
                            "example": "specialty.nodes.spotk8s.com"
                          },
                          "labels": {
                            "type": "array",
                            "description": "An array of labels to add to the VNG nodes. Only custom user labels are allowed,\nand not Kubernetes built-in labels or Spot internal labels.\n",
                            "items": {
                              "type": "object",
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Set label key. \\\nThe following are not allowed:\n* \"kubernetes.io/hostname\"\n* \"failure-domain.beta.kubernetes.io/zone\"\n* \"topology.kubernetes.io/zone\"\n* \"failure-domain.beta.kubernetes.io/region\"\n* \"topology.kubernetes.io/region\"\n* \"beta.kubernetes.io/instance-type\"\n* \"node.kubernetes.io/instance-type\"\n* \"beta.kubernetes.io/os\"\n* \"kubernetes.io/os\"\n* \"beta.kubernetes.io/arch\"\n* \"kubernetes.io/arch\"\n* \"spotinst.io/node-lifecycle\"\n"
                                },
                                "value": {
                                  "type": "string",
                                  "description": "Set label value.\n"
                                }
                              }
                            },
                            "example": [
                              {
                                "key": "env",
                                "value": "test"
                              }
                            ]
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Import EKS Cluster Node Group to Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/launchSpec/eksNodeGroup/import"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "Ocean Import EKS Cluster Node Group to Virtual Node Group Response.\n",
                                "properties": {
                                  "oceanId": {
                                    "type": "string",
                                    "example": "o-500a5d5a"
                                  },
                                  "name": {
                                    "type": "string",
                                    "example": "TestTeam1"
                                  },
                                  "imageId": {
                                    "type": "string",
                                    "example": "ami-0ce21b51cb55a48b8"
                                  },
                                  "securityGroupIds": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "example": "sg-03ccf232a2bf0f4ea"
                                    }
                                  },
                                  "tags": {
                                    "type": "array",
                                    "description": "A maximum of 10 unique key-value pairs for VM tags in the virtual node group.\n",
                                    "items": {
                                      "type": "object",
                                      "required": [
                                        "tagKey"
                                      ],
                                      "properties": {
                                        "tagKey": {
                                          "type": "string",
                                          "description": "Tag key for VMs in the cluster.\n",
                                          "example": "env"
                                        },
                                        "tagValue": {
                                          "type": "string",
                                          "description": "Tag value for VMs in the cluster.\n",
                                          "example": "staging"
                                        }
                                      }
                                    }
                                  },
                                  "instanceMetadataOptions": {
                                    "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/launchSpec/properties/instanceMetadataOptions"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance": {
      "post": {
        "summary": "Create Stateful Node",
        "description": "Create a new Stateful Node resource.\n",
        "operationId": "AWSManagedInstanceCreate",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "managedInstance": {
                        "type": "object",
                        "required": [
                          "name",
                          "region"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "mi-test",
                            "description": "Stateful Node name\n"
                          },
                          "description": {
                            "type": "string",
                            "example": "This is my Stateful Node",
                            "description": "Describe your Stateful Node resource\n"
                          },
                          "region": {
                            "type": "string",
                            "example": "us-east-1",
                            "description": "The AWS region your resource will be created in.\n"
                          },
                          "strategy": {
                            "type": "object",
                            "title": "MI Strategy",
                            "properties": {
                              "lifeCycle": {
                                "type": "string",
                                "example": "spot",
                                "description": "Set lifecycle, valid values: `spot`, `on_demand` Default: spot\n"
                              },
                              "orientation": {
                                "type": "string",
                                "example": "availabilityOriented",
                                "description": "The strategy orientation. valid values: `costOriented`, `availabilityOriented`, `balanced`, `cheapest` Default: availabilityOriented\n"
                              },
                              "drainingTimeout": {
                                "type": "integer",
                                "description": "The time in seconds to allow the instance be drained from incoming TCP connections and detached from ELB before terminating it, during a scale down operation\n"
                              },
                              "fallbackToOd": {
                                "type": "boolean",
                                "example": true,
                                "description": "In case of no spots available, Stateful Node will launch an On-demand instance instead Default: true\n"
                              },
                              "utilizeReservedInstances": {
                                "type": "boolean",
                                "default": false,
                                "example": true,
                                "description": "In case of any available Reserved Instances, Stateful Node will utilize them before purchasing Spot instances Default: false\n"
                              },
                              "utilizeCommitments": {
                                "type": "boolean",
                                "description": "If there are available Reserved Instances or Savings Plans, Elastigroup will utilize them before using Spot instances\n",
                                "example": false
                              },
                              "optimizationWindows": {
                                "type": "array",
                                "description": "When performAt is 'timeWindow': must specify a list of 'timeWindows' with at least one time window Each string is in the format of - ddd:hh:mm-ddd:hh:mm ddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat hh = hour 24 = 0 -23 mm = minute = 0 - 59\n",
                                "items": {
                                  "type": "string",
                                  "example": "Mon:03:00-Wed:02:30"
                                }
                              },
                              "revertToSpot": {
                                "type": "object",
                                "title": "When Elastigroup moves from OnDemand back to Spot capacity",
                                "properties": {
                                  "performAt": {
                                    "type": "string",
                                    "example": "timeWindow",
                                    "enum": [
                                      "never",
                                      "always",
                                      "timeWindow"
                                    ],
                                    "description": "Valid values: `always`, `never`, \"timeWindow\" Example: never Default: never\n"
                                  }
                                }
                              }
                            }
                          },
                          "compute": {
                            "type": "object",
                            "title": "MI Compute",
                            "required": [
                              "subnetIds",
                              "vpcId"
                            ],
                            "properties": {
                              "subnetIds": {
                                "type": "array",
                                "description": "A comma-separated list of subnet identifiers for your instance.\n",
                                "items": {
                                  "type": "string",
                                  "example": "subnet-79da021e"
                                }
                              },
                              "vpcId": {
                                "type": "string",
                                "example": "vpc-111",
                                "description": "VPC ID for your instance.\n"
                              },
                              "elasticIp": {
                                "type": "string",
                                "example": "ip",
                                "description": "Elastic IP Allocation Id to associate to the instance\n"
                              },
                              "privateIp": {
                                "type": "string",
                                "example": "ip",
                                "description": "Private IP Allocation Id to associate to the instance\n"
                              },
                              "product": {
                                "type": "string",
                                "example": "Linux/UNIX",
                                "description": "Operation system type. Possible values: Linux/UNIX, SUSE Linux, Windows, Red Hat Enterprise Linux In case of EC2 classic: Linux/UNIX (Amazon VPC), SUSE Linux (Amazon VPC), Windows (Amazon VPC), Red Hat Enterprise Linux (Amazon VPC)\n"
                              },
                              "volumeAttachments": {
                                "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/compute/properties/volumeAttachments"
                              },
                              "launchSpecification": {
                                "type": "object",
                                "properties": {
                                  "instanceTypes": {
                                    "type": "object",
                                    "properties": {
                                      "preferredType": {
                                        "type": "string",
                                        "example": "t2.micro",
                                        "description": "Prioritized instance type. The instance type must be included in the selected instance types or  meet the resource requirements if defined. Note: Either preferredType or preferredTypes can be defined,  but not both.\n"
                                      },
                                      "preferredTypes": {
                                        "type": "array",
                                        "description": "Prioritized subset of instance types. The list must be a subset of the selected instance types or meet the  resource requirements if defined. Note: Either preferredType or preferredTypes can be defined, but not  both.\n",
                                        "items": {
                                          "type": "string",
                                          "example": [
                                            "t2.micro",
                                            "t3.micro",
                                            "t2.medium",
                                            "t3.medium"
                                          ]
                                        }
                                      },
                                      "types": {
                                        "type": "array",
                                        "description": "Set instance types settings.  \nNote: Cannot be defined if 'resourceRequirements' is defined.\n",
                                        "items": {
                                          "type": "string",
                                          "example": "t2.micro"
                                        }
                                      },
                                      "resourceRequirements": {
                                        "$ref": "#/paths/~1aws~1ec2~1group/post/requestBody/content/application~1json/schema/allOf/0/properties/group/properties/compute/properties/instanceTypes/properties/resourceRequirements"
                                      }
                                    }
                                  },
                                  "ebsOptimized": {
                                    "type": "boolean",
                                    "example": false,
                                    "description": "Enable EBS optimization for supported instance which is not enabled by default. Note - additional charges will be applied. Default: false\n"
                                  },
                                  "monitoring": {
                                    "type": "boolean",
                                    "example": false,
                                    "description": "Describes whether instance Enhanced Monitoring is enabled. Default: false\n"
                                  },
                                  "tenancy": {
                                    "type": "string",
                                    "example": "default",
                                    "description": "Valid values: \"default\", \"dedicated\" Default: default\n"
                                  },
                                  "iamRole": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "example": "name"
                                      },
                                      "arn": {
                                        "type": "string",
                                        "example": "arn"
                                      }
                                    }
                                  },
                                  "securityGroupIds": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "example": "sg-0dfc2c8760df6fec7"
                                    }
                                  },
                                  "imageId": {
                                    "type": "string",
                                    "example": "ami-01e24be29428c15b2"
                                  },
                                  "keyPair": {
                                    "type": "string",
                                    "example": "labs-oregon"
                                  },
                                  "tags": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "tagKey": {
                                          "type": "string",
                                          "example": "Creator"
                                        },
                                        "tagValue": {
                                          "type": "string",
                                          "example": "test1@spot.io"
                                        }
                                      }
                                    }
                                  },
                                  "resourceTagSpecification": {
                                    "type": "object",
                                    "description": "Optional field. User will specified which resources should be tagged with group tags.",
                                    "properties": {
                                      "volumes": {
                                        "type": "object",
                                        "description": "Optional field. Tag specification for Volume resources.",
                                        "properties": {
                                          "shouldTag": {
                                            "type": "boolean",
                                            "description": "Optional field. Volume resources will be tagged with group tags.",
                                            "default": false,
                                            "example": false
                                          }
                                        }
                                      },
                                      "snapshots": {
                                        "type": "object",
                                        "description": "Optional field. Tag specification for Snapshot resources.",
                                        "properties": {
                                          "shouldTag": {
                                            "type": "boolean",
                                            "description": "Optional field. Snapshot resources will be tagged with group tags.",
                                            "default": true,
                                            "example": true
                                          }
                                        }
                                      },
                                      "enis": {
                                        "type": "object",
                                        "description": "Optional field. Tag specification for ENI resources.",
                                        "properties": {
                                          "shouldTag": {
                                            "type": "boolean",
                                            "description": "Optional field. ENI resources will be tagged with group tags.",
                                            "default": false,
                                            "example": false
                                          }
                                        }
                                      },
                                      "amis": {
                                        "type": "object",
                                        "description": "Optional field. Tag specification for AMI resources.",
                                        "properties": {
                                          "shouldTag": {
                                            "type": "boolean",
                                            "description": "Optional field. AMI resources will be tagged with group tags.",
                                            "default": true,
                                            "example": true
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "userData": {
                                    "type": "string",
                                    "example": "dXNlcmJhc2g2NGVuY29kZWQ="
                                  },
                                  "shutdownScript": {
                                    "type": "string",
                                    "example": "dXNlcmJhc2g2NGVuY29kZWQ="
                                  },
                                  "creditSpecification": {
                                    "type": "object",
                                    "properties": {
                                      "cpuCredits": {
                                        "type": "string",
                                        "example": "unlimited"
                                      }
                                    }
                                  },
                                  "networkInterfaces": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "deviceIndex": {
                                          "type": "integer",
                                          "example": 0
                                        },
                                        "associatePublicIpAddress": {
                                          "type": "boolean",
                                          "example": true
                                        },
                                        "associateIpv6Address": {
                                          "type": "boolean",
                                          "example": true
                                        }
                                      }
                                    }
                                  },
                                  "blockDeviceMappings": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "deviceName": {
                                          "type": "string",
                                          "example": "/dev/xvdcz"
                                        },
                                        "ebs": {
                                          "type": "object",
                                          "properties": {
                                            "iops": {
                                              "type": "integer",
                                              "minimum": 0,
                                              "description": "Must be greater than or equal to 0\n",
                                              "example": 0
                                            },
                                            "throughput": {
                                              "type": "integer",
                                              "minimum": 125,
                                              "maximum": 1000,
                                              "example": 125,
                                              "description": "The amount of data transferred to or from a storage device per second, you can use this param just in a case that volumetype=‘gp3’.\n"
                                            },
                                            "deleteOnTermination": {
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "encrypted": {
                                              "type": "boolean",
                                              "example": true
                                            },
                                            "volumeSize": {
                                              "type": "integer",
                                              "example": 12
                                            },
                                            "volumeType": {
                                              "type": "string",
                                              "example": "gp2"
                                            },
                                            "kmsKeyId": {
                                              "type": "string"
                                            },
                                            "snapshotId": {
                                              "type": "string"
                                            }
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "metadataOptions": {
                                    "title": "Metadata Options",
                                    "type": "object",
                                    "description": "Optional field. Used for IMDSv2.",
                                    "required": [
                                      "httpTokens"
                                    ],
                                    "properties": {
                                      "httpTokens": {
                                        "title": "HTTP Tokens",
                                        "type": "string",
                                        "description": "Required for IMDSv2. Can’t be null in Create or Update. Values can be \"optional\" or \"required\".",
                                        "example": "optional"
                                      },
                                      "httpPutResponseHopLimit": {
                                        "type": "integer",
                                        "example": "33",
                                        "description": "An integer within 1,64 range (including).\nThe desired HTTP PUT response hop limit for instance metadata requests.\nThe larger the number, the further instance metadata requests can travel.\n"
                                      },
                                      "instanceMetadataTags": {
                                        "title": "Instance Metadata Tags",
                                        "type": "string",
                                        "enum": [
                                          "Enabled",
                                          "Disabled"
                                        ],
                                        "description": "Indicates whether access to instance tags from the instance metadata is enabled or disabled.\nCan’t be null.\n",
                                        "example": "Enabled"
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "integrations": {
                            "type": "object",
                            "title": "MI integrations",
                            "properties": {
                              "loadBalancersConfig": {
                                "type": "object",
                                "properties": {
                                  "loadBalancers": {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "object",
                                          "properties": {
                                            "name": {
                                              "type": "string",
                                              "example": "name"
                                            },
                                            "arn": {
                                              "type": "string",
                                              "example": "arn"
                                            },
                                            "type": {
                                              "type": "string",
                                              "example": "CLASSIC",
                                              "description": "The resource type. Valid Values: CLASSIC, TARGET_GROUP\n"
                                            }
                                          }
                                        }
                                      ]
                                    }
                                  }
                                }
                              },
                              "route53": {
                                "type": "object",
                                "properties": {
                                  "domains": {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "object",
                                          "properties": {
                                            "hostedZoneId": {
                                              "type": "string",
                                              "example": "Z00275642KS5ZZJFIQBCA"
                                            },
                                            "recordSetType": {
                                              "type": "string",
                                              "example": "a"
                                            },
                                            "spotinstAccountId": {
                                              "type": "string",
                                              "example": "act-1234"
                                            },
                                            "recordSets": {
                                              "type": "array",
                                              "items": {
                                                "anyOf": [
                                                  {
                                                    "type": "object",
                                                    "properties": {
                                                      "usePublicIp": {
                                                        "type": "boolean",
                                                        "example": true
                                                      },
                                                      "name": {
                                                        "type": "string",
                                                        "example": "testa.spot.io"
                                                      }
                                                    }
                                                  }
                                                ]
                                              }
                                            }
                                          }
                                        }
                                      ]
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "scheduling": {
                            "type": "object",
                            "title": "MI Scheduling",
                            "properties": {
                              "tasks": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "title": "Task Definition",
                                  "properties": {
                                    "taskType": {
                                      "type": "string",
                                      "example": "recycle",
                                      "enum": [
                                        "pause",
                                        "resume",
                                        "recycle"
                                      ],
                                      "description": "The task type to run.\n"
                                    },
                                    "startTime": {
                                      "type": "string",
                                      "example": "2018-05-23T10:55:09Z",
                                      "description": "DATETIME in ISO-8601 format. Sets a start time for scheduled actions. If `frequency` or `cronExpression` are not used - the task will run only once at the start time and will then be deleted from the group configuration\n"
                                    },
                                    "cronExpression": {
                                      "type": "string",
                                      "example": "0 1 * * *",
                                      "description": "A valid cron expression. For example : \" * * * * * \". The cron is running in UTC time zone and is in Unix cron format Cron Expression Validator Script. Only one of ‘frequency' or ‘cronExpression' should be used at a time.\n"
                                    },
                                    "isEnabled": {
                                      "type": "boolean",
                                      "default": true,
                                      "example": true,
                                      "description": "Describes whether the task is enabled. When true the task should run when false it should not run.\n"
                                    },
                                    "frequency": {
                                      "type": "string",
                                      "enum": [
                                        "hourly",
                                        "daily",
                                        "weekly"
                                      ],
                                      "description": "The recurrence frequency to run this task. Only one of `frequency` or `cronExpression` should be used at a time\n"
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "persistence": {
                            "type": "object",
                            "description": "Persistence settings. Should omit at least one of the persist options below.\n",
                            "properties": {
                              "blockDevicesMode": {
                                "type": "string",
                                "example": "reattach",
                                "description": "Determine the way we attach the data volumes to the data devices.\n",
                                "enum": [
                                  "reattach",
                                  "onLaunch"
                                ],
                                "default": "onLaunch"
                              },
                              "persistRootDevice": {
                                "type": "boolean",
                                "example": true,
                                "description": "Should the instance maintain its root device volumes\n"
                              },
                              "persistBlockDevices": {
                                "type": "boolean",
                                "example": true,
                                "description": "Should the instance maintain its Data volumes\n"
                              },
                              "persistPrivateIp": {
                                "type": "boolean",
                                "example": true,
                                "description": "Should the instance maintain its private IP\n"
                              }
                            }
                          },
                          "healthCheck": {
                            "type": "object",
                            "properties": {
                              "type": {
                                "type": "string",
                                "example": "EC2",
                                "description": "The service to use for the health check.\n",
                                "enum": [
                                  "EC2",
                                  "ELB",
                                  "TARGET_GROUP"
                                ],
                                "default": "EC2"
                              },
                              "autoHealing": {
                                "type": "boolean",
                                "example": true,
                                "description": "Enable the auto healing which auto replaces the instance in case the health check fails\n",
                                "default": true
                              },
                              "gracePeriod": {
                                "type": "integer",
                                "example": 120,
                                "description": "The amount of time, in seconds, after the instance has launched to starts and check its health.\n",
                                "default": 120
                              },
                              "unhealthyDuration": {
                                "type": "integer",
                                "example": 120,
                                "description": "The amount of time, in seconds, an existing instance should remain active after becoming unhealthy.\\\nAfter the set time out the instance will be replaced\n",
                                "default": 120
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1aws~1ec2~1managedInstance/post/requestBody/content/application~1json/schema/allOf/0"
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:managedInstance"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Stateful Nodes",
        "description": "List all Stateful Node resources in the account.\n",
        "operationId": "AWSManagedInstanceList",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2020-04-10T21:41:31.000Z"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "example": "2020-05-12T22:37:18.000Z"
                                  },
                                  "id": {
                                    "type": "string",
                                    "example": "smi-34ae3a42"
                                  },
                                  "config": {
                                    "type": "object",
                                    "required": [
                                      "region"
                                    ],
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "example": "mi-test",
                                        "description": "Stateful Node name\n"
                                      },
                                      "region": {
                                        "type": "string",
                                        "example": "us-east-1",
                                        "description": "The AWS region your resource will be created in.\n"
                                      },
                                      "strategy": {
                                        "$ref": "#/paths/~1aws~1ec2~1managedInstance/post/requestBody/content/application~1json/schema/allOf/0/properties/managedInstance/properties/strategy"
                                      },
                                      "persistence": {
                                        "type": "object",
                                        "description": "Persistence settings. Should omit at least one of the persist options below.\n",
                                        "properties": {
                                          "blockDevicesMode": {
                                            "type": "string",
                                            "example": "reattach",
                                            "description": "Determine the way we attach the data volumes to the data devices. Valid values: ‘reattach', ‘onLaunch' Default: onLaunch\n"
                                          },
                                          "persistRootDevice": {
                                            "type": "boolean",
                                            "example": true,
                                            "description": "Should the instance maintain its root device volumes\n"
                                          },
                                          "persistBlockDevices": {
                                            "type": "boolean",
                                            "example": true,
                                            "description": "Should the instance maintain its Data volumes\n"
                                          },
                                          "persistPrivateIp": {
                                            "type": "boolean",
                                            "example": true,
                                            "description": "Should the instance maintain its private IP\n"
                                          }
                                        }
                                      },
                                      "healthCheck": {
                                        "type": "object",
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "example": "EC2",
                                            "description": "The service to use for the health check. Valid values: `EC2`, `ELB`, `TARGET_GROUP` Default: EC2\n"
                                          },
                                          "autoHealing": {
                                            "type": "boolean",
                                            "example": true,
                                            "description": "Enable the auto healing which auto replaces the instance in case the health check fails Default: true\n"
                                          },
                                          "gracePeriod": {
                                            "type": "integer",
                                            "example": 120,
                                            "description": "The amount of time, in seconds, after the instance has launched to starts and check its health. Default: 120\n"
                                          },
                                          "unhealthyDuration": {
                                            "type": "integer",
                                            "example": 120,
                                            "description": "The amount of time, in seconds, an existing instance should remain active after becoming unhealthy. After the set time out the instance will be replaced Default: 120\n"
                                          }
                                        }
                                      },
                                      "compute": {
                                        "$ref": "#/paths/~1aws~1ec2~1managedInstance/post/requestBody/content/application~1json/schema/allOf/0/properties/managedInstance/properties/compute"
                                      },
                                      "integrations": {
                                        "$ref": "#/paths/~1aws~1ec2~1managedInstance/post/requestBody/content/application~1json/schema/allOf/0/properties/managedInstance/properties/integrations"
                                      },
                                      "scheduling": {
                                        "$ref": "#/paths/~1aws~1ec2~1managedInstance/post/requestBody/content/application~1json/schema/allOf/0/properties/managedInstance/properties/scheduling"
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:managedInstance"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance/{MI_ID}": {
      "put": {
        "summary": "Update Stateful Node",
        "description": "<ul> <li>Update one or more attributes in your Stateful Node.\n<li>This API supports partial updates, so only specific fields can be updated separately.\n<li>In order to remove a setting from the instance config, set the object value to null.\n<li>For a Full List of the Elastigroup JSON object reference please see Stateful Node Create. <ul>\n",
        "operationId": "AWSManagedInstanceUpdate",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "MI_ID",
            "example": "smi-111",
            "description": "Stateful Node ID you want to get\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/paths/~1aws~1ec2~1managedInstance/post/requestBody/content/application~1json/schema/allOf/0"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1aws~1ec2~1managedInstance/post/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Stateful Node",
        "description": "Get specific Stateful Node config.\n",
        "operationId": "AWSManagedInstanceGet",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1managedInstance~1%7BMI_ID%7D/put/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1aws~1ec2~1managedInstance/post/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Stateful Node",
        "description": "Get specific Stateful Node config.\n",
        "operationId": "AWSManagedInstanceDelete",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1managedInstance~1%7BMI_ID%7D/put/parameters/1"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "deallocationConfig": {
                        "type": "object",
                        "properties": {
                          "shouldDeleteImages": {
                            "type": "boolean",
                            "example": true,
                            "description": "Flag to remove persistent image\nDefault: false\n"
                          },
                          "shouldDeleteNetworkInterfaces": {
                            "type": "boolean",
                            "example": true,
                            "description": "Flag to remove network interfaces\nDefault: false\n"
                          },
                          "shouldDeleteVolumes": {
                            "type": "boolean",
                            "example": true,
                            "description": "Flag to remove persistent volumes\nDefault: false\n"
                          },
                          "shouldDeleteSnapshots": {
                            "type": "boolean",
                            "example": true,
                            "description": "Flag to remove snapshots\nDefault: false\n"
                          },
                          "shouldTerminateInstance": {
                            "type": "boolean",
                            "example": true,
                            "description": "Flag to detach a machine without terminating it on AWS side. This will enable rollback to AWS.\nExample: false\n"
                          }
                        }
                      },
                      "amiBackup": {
                        "type": "object",
                        "properties": {
                          "shouldDeleteImages": {
                            "type": "boolean",
                            "example": true,
                            "description": "Mark if images collected during AMI Auto Backup should be deleted during instance deletion\nDefault: false\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance/{MI_ID}/pause": {
      "put": {
        "summary": "Pause Stateful Node",
        "description": "Pause an existing Stateful Node.\n",
        "operationId": "AWSManagedInstancePause",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1managedInstance~1%7BMI_ID%7D/put/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance/{MI_ID}/resume": {
      "put": {
        "summary": "Resume Stateful Node",
        "description": "Resume an existing Stateful Node.\n",
        "operationId": "AWSManagedInstanceResume",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1managedInstance~1%7BMI_ID%7D/put/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance/{MI_ID}/recycle": {
      "put": {
        "summary": "Recycle Stateful Node",
        "description": "Recycle an existing Stateful Node.\n",
        "operationId": "AWSManagedInstanceRecycle",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1managedInstance~1%7BMI_ID%7D/put/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance/{MI_ID}/costs": {
      "get": {
        "summary": "Get Stateful Node Costs",
        "description": "Get financial information on a specific Stateful Node.\nTo use this API, managedInstanceId must be defined.\n",
        "operationId": "AWSManagedInstanceCostsPerManagedInstance",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1managedInstance~1%7BMI_ID%7D/put/parameters/1"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D~1events/get/parameters/2"
          },
          {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D~1events/get/parameters/3"
          },
          {
            "in": "query",
            "name": "aggregationPeriod",
            "schema": {
              "type": "string"
            },
            "description": "Data values following either a date format (YYYY-MM-DDTHH:mm:ss.SSSZ ; 2016-01-10T00:00:00.000Z) or Unix seconds Timestamp (1494751821)\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Get Elastigroup Costs",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "running": {
                                    "type": "object",
                                    "properties": {
                                      "value": {
                                        "type": "integer",
                                        "example": 4
                                      },
                                      "unit": {
                                        "type": "string",
                                        "example": "hours"
                                      }
                                    }
                                  },
                                  "savings": {
                                    "type": "object",
                                    "properties": {
                                      "value": {
                                        "type": "integer",
                                        "example": 0
                                      },
                                      "unit": {
                                        "type": "string",
                                        "example": "percentage"
                                      }
                                    }
                                  },
                                  "costs": {
                                    "type": "object",
                                    "properties": {
                                      "actual": {
                                        "type": "integer",
                                        "example": 0.268
                                      },
                                      "potential": {
                                        "type": "integer",
                                        "example": 0.268
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:managedInstance:costs"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance/{MI_ID}/status": {
      "get": {
        "summary": "Get Stateful Node Status",
        "description": "Describes the current status of a specific Stateful Node – entailing information regarding running instance and its status.\n",
        "operationId": "AWSManagedInstanceStatus",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1aws~1ec2~1managedInstance~1%7BMI_ID%7D/put/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Elastigroup Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "example": "smi-50739ad2"
                                  },
                                  "name": {
                                    "type": "string",
                                    "example": "i-0db00q51ec9069ebf"
                                  },
                                  "status": {
                                    "type": "string",
                                    "example": "ACTIVE"
                                  },
                                  "instanceId": {
                                    "type": "string",
                                    "example": "i-0vc9530daq19c4aad"
                                  },
                                  "instanceType": {
                                    "type": "string",
                                    "example": "t2.micro"
                                  },
                                  "imageId": {
                                    "type": "string",
                                    "example": "ami-03238ecdbdc7d6d6a"
                                  },
                                  "privateIp": {
                                    "type": "string",
                                    "example": "172.31.10.21"
                                  },
                                  "publicIp": {
                                    "type": "string",
                                    "example": "34.212.65.224"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2020-05-05T08:53:12.000Z"
                                  },
                                  "launchedAt": {
                                    "type": "string",
                                    "example": "2020-05-05T08:53:12.000Z"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:managedInstanceStatus"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance/{MI_ID}/volume/{volumeId}": {
      "delete": {
        "summary": "Delete Volume in a Stateful Node",
        "description": "Delete a Volume that is part of a Stateful Node\n",
        "operationId": "deleteVolumeManagedInstance",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "MI_ID",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "smi-123456",
            "description": "Stateful Node ID\n"
          },
          {
            "in": "path",
            "name": "volumeId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "vol-0faa4b2957a3d59c8",
            "description": "Volume ID\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Delete Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "3b750eff-3940-46b3-a309-aa2b415272fd",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/aws/ec2/managedInstance/smi-123456/volume/vol-0faa4b2957a3d59c8",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "DELETE",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2021-11-03T11:02:55.608Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance/migration": {
      "post": {
        "summary": "Import Instance from AWS",
        "description": "<ul> <li>Import an instance from AWS into Stateful Node, while keeping the instance data and its persistence settings.\n<li>This call is starting the migration and returns migration ID.\n<li>In order to get migration status use the Get Migration Status call <ul>\n",
        "operationId": "AWSManagedInstanceImportInstanceFromAWS",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "migration"
                    ],
                    "properties": {
                      "migration": {
                        "title": "Migration",
                        "description": "Migration Configuration",
                        "type": "object",
                        "required": [
                          "originalInstanceId",
                          "region"
                        ],
                        "properties": {
                          "shouldKeepPrivateIp": {
                            "type": "boolean",
                            "example": false,
                            "description": "Set whether the instance should keep its private ip or not\n"
                          },
                          "shouldKeepMetadataOptions": {
                            "type": "boolean",
                            "example": false,
                            "description": "Set whether the instance should keep its metadataOptions or not\n"
                          },
                          "originalInstanceId": {
                            "type": "string",
                            "example": "i-123",
                            "description": "The instance ID on AWS\n"
                          },
                          "region": {
                            "type": "string",
                            "example": "us-east-1",
                            "description": "Set instance's region\n"
                          },
                          "shouldTerminateInstance": {
                            "type": "boolean",
                            "example": false,
                            "description": "Set true or false whether to terminate the instance in AWS. Note: If shouldKeepPrivateIp is true, then shouldTerminateInstance must be true. Otherwise an error will be returned.\n"
                          },
                          "managedInstanceName": {
                            "type": "string",
                            "example": "us-east-1",
                            "description": "Set Stateful Node name\n"
                          },
                          "product": {
                            "type": "string",
                            "example": "Linux/UNIX",
                            "description": "Set instance's product\n"
                          },
                          "spotInstanceTypes": {
                            "type": "array",
                            "description": "List of possible instance types for the Stateful Node\n",
                            "items": {
                              "type": "string",
                              "example": "m3.large"
                            }
                          },
                          "availabilityZones": {
                            "title": "Availability Zones",
                            "description": "List of availability zones for the Stateful Node. Should exist only if shouldKeepPrivateIp is false.",
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "name": {
                                  "type": "string",
                                  "description": "Availability Zone name",
                                  "example": "us-west-2c"
                                },
                                "subnetIds": {
                                  "type": "array",
                                  "items": {
                                    "type": "string",
                                    "example": "subnet-fdfb00a0"
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Migration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "migrationId": {
                                    "type": "string",
                                    "title": "The id of the migration",
                                    "description": "In order to fetch migration status, you can utilize this id as a `Get Instance Migration Status` API call input",
                                    "example": "smg-123"
                                  },
                                  "managedInstanceId": {
                                    "type": "string",
                                    "title": "Stateful Node ID",
                                    "example": "smi-123"
                                  },
                                  "data": {
                                    "type": "object",
                                    "properties": {
                                      "originalInstanceId": {
                                        "type": "string",
                                        "title": "Instance id",
                                        "description": "Original AWS EC2 Instance id",
                                        "example": "i-123"
                                      },
                                      "shouldKeepPrivateIp": {
                                        "type": "boolean",
                                        "title": "Should keep private IP",
                                        "example": true
                                      },
                                      "shouldKeepMetadataOptions": {
                                        "type": "boolean",
                                        "title": "Should keep metadataOptions",
                                        "example": true
                                      },
                                      "shouldTerminateInstance": {
                                        "type": "boolean",
                                        "title": "Should terminate instance",
                                        "example": true
                                      }
                                    }
                                  },
                                  "state": {
                                    "type": "string",
                                    "title": "Migration state",
                                    "description": "On initiation, the migration would be in the following state - `MIGRATE_START`. Possible end states for the migration are -  `MIGRATE_CANCEL`, `MIGRATE_FINISH`, `MIGRATE_ERROR`.",
                                    "example": "MIGRATE_START"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:managedInstance:migration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance/migration/bulk": {
      "post": {
        "summary": "Import Multiple Instances from AWS",
        "description": "<ul> <li>Import multiple stateful instances from AWS into Stateful Node, preserving both instance data and persistence settings.\n<li>This call initiates migration for all instances and returns the associated migration IDs.\n<li>To check the status of multiple migrations, use the `Get Multiple Instance Migration Status` call.\n<li>Note: The response contains a `failures` field. In the event that one or more instances failed to migrate, this field will provide the corresponding resource IDs and error messages. If all migrations were successful, this field will return an empty list. <ul>\n",
        "operationId": "AWSManagedInstanceBulkImportInstanceFromAWS",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "migrations"
                    ],
                    "properties": {
                      "migrations": {
                        "title": "Migrations",
                        "description": "List of Migration requests",
                        "type": "array",
                        "items": {
                          "type": "object",
                          "title": "Migration",
                          "description": "Migration request",
                          "required": [
                            "originalInstanceId",
                            "region"
                          ],
                          "properties": {
                            "shouldKeepPrivateIp": {
                              "type": "boolean",
                              "example": false,
                              "description": "Set whether the instance should keep its private ip or not\n"
                            },
                            "shouldKeepMetadataOptions": {
                              "type": "boolean",
                              "example": false,
                              "description": "Set whether the instance should keep its metadataOptions or not\n"
                            },
                            "originalInstanceId": {
                              "type": "string",
                              "example": "i-123",
                              "description": "The instance ID on AWS\n"
                            },
                            "region": {
                              "type": "string",
                              "example": "us-east-1",
                              "description": "Set instance's region\n"
                            },
                            "shouldTerminateInstance": {
                              "type": "boolean",
                              "example": false,
                              "description": "Set true or false whether to terminate the instance in AWS. Note: If shouldKeepPrivateIp is true, then shouldTerminateInstance must be true. Otherwise an error will be returned.\n"
                            },
                            "managedInstanceName": {
                              "type": "string",
                              "example": "us-east-1",
                              "description": "Set Stateful Node name\n"
                            },
                            "product": {
                              "type": "string",
                              "example": "Linux/UNIX",
                              "description": "Set instance's product\n"
                            },
                            "spotInstanceTypes": {
                              "type": "array",
                              "description": "List of possible instance types for the Stateful Node\n",
                              "items": {
                                "type": "string",
                                "example": "m3.large"
                              }
                            },
                            "availabilityZones": {
                              "title": "Availability Zones",
                              "description": "List of availability zones for the Stateful Node. Should exist only if shouldKeepPrivateIp is false.",
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "description": "Availability Zone name",
                                    "example": "us-west-2c"
                                  },
                                  "subnetIds": {
                                    "type": "array",
                                    "items": {
                                      "type": "string",
                                      "example": "subnet-fdfb00a0"
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bulk Migration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Migration",
                                "properties": {
                                  "migrationId": {
                                    "type": "string",
                                    "title": "The id of the migration",
                                    "description": "In order to fetch migration status, you can utilize this id as a `Get Instance Migration Status` API call input",
                                    "example": "smg-123"
                                  },
                                  "managedInstanceId": {
                                    "type": "string",
                                    "title": "Stateful Node ID",
                                    "example": "smi-123"
                                  },
                                  "data": {
                                    "type": "object",
                                    "properties": {
                                      "originalInstanceId": {
                                        "type": "string",
                                        "title": "Instance id",
                                        "description": "Original AWS EC2 Instance id",
                                        "example": "i-123"
                                      },
                                      "managedInstanceName": {
                                        "type": "string",
                                        "title": "Stateful Node name",
                                        "description": "Your chosen Stateful Node name, so you would be able to distinct between your requests",
                                        "example": "MI-PROD-123"
                                      },
                                      "shouldKeepPrivateIp": {
                                        "type": "boolean",
                                        "title": "Should keep private IP",
                                        "example": true
                                      },
                                      "shouldKeepMetadataOptions": {
                                        "type": "boolean",
                                        "title": "Should keep metadataOptions",
                                        "example": true
                                      },
                                      "shouldTerminateInstance": {
                                        "type": "boolean",
                                        "title": "Should terminate instance",
                                        "example": true
                                      }
                                    }
                                  },
                                  "state": {
                                    "type": "string",
                                    "title": "Migration state",
                                    "description": "On initiation, the migration would be in the following state - `MIGRATE_START`. Possible end states for the migration are -  `MIGRATE_CANCEL`, `MIGRATE_FINISH`, `MIGRATE_ERROR`.",
                                    "example": "MIGRATE_START"
                                  }
                                }
                              }
                            },
                            "failures": {
                              "type": "array",
                              "title": "Failed instances",
                              "description": "AWS EC2 instances that we failed to start migrating. In case there are no failures, would return empty list",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "resourceId": {
                                    "type": "string",
                                    "title": "Original Instance Id",
                                    "example": "i-456"
                                  },
                                  "errorMessage": {
                                    "title": "Error Message",
                                    "type": "string",
                                    "description": "Failure reason",
                                    "example": "Failed to create migration for Stateful Node"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:managedInstance:migration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance/migration/{MIGRATION_ID}": {
      "get": {
        "summary": "Get Instance Migration Status",
        "description": "<ul> <li>Get a previously initiated instance migration status.\n<li>To initiate an instance migration from AWS use the Import Instance From AWS call.\n<li>On initiation, the migration would be in the following state: `MIGRATE_START`.\n<li>Possible end states for the migration are: `MIGRATE_CANCEL`, `MIGRATE_FINISH`, `MIGRATE_ERROR`. <ul>\n",
        "operationId": "AWSManagedInstanceGetInstanceMigrationStatus",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "MIGRATION_ID",
            "example": "smg-123",
            "description": "Migration ID for which you want to get the status\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Stateful Node Migration Status Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1aws~1ec2~1managedInstance~1migration~1search/post/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:managedInstance:migration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance/migration/search": {
      "post": {
        "summary": "Get Multiple Instance Migration Status",
        "description": "<ul> <li>Retrieve the status of a previously initiated multiple instance migrations.\n<li>To initiate multiple instance migrations from AWS, use the `Import Multiple Instances From AWS` call.\n<li>Upon initiation, the migration will be in the state of `MIGRATE_START`.\n<li>Possible final states for each migration include `MIGRATE_CANCEL`, `MIGRATE_FINISH`, and `MIGRATE_ERROR`. <ul>\n",
        "operationId": "AWSManagedInstanceGetMultipleInstanceMigrationStatus",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "migrationIds"
                    ],
                    "properties": {
                      "migrationIds": {
                        "title": "Migration Ids",
                        "description": "List of Migration ids. Use the `migrationId` field received in a `Import Multiple Instances from AWS` response",
                        "type": "array",
                        "items": {
                          "type": "string",
                          "title": "Migration Id",
                          "example": [
                            "smg-1234",
                            "smi-5678"
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Bulk Stateful Node Migration Status Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "example": [
                                {
                                  "migrationId": "smg-1234",
                                  "managedInstanceId": "smi-1234",
                                  "instanceId": "i-1234",
                                  "state": "MIGRATE_START",
                                  "stateDescription": "Current state description"
                                },
                                {
                                  "migrationId": "smg-5678",
                                  "managedInstanceId": "smi-5678",
                                  "instanceId": "i-5678",
                                  "state": "MIGRATE_START",
                                  "stateDescription": "Current state description"
                                }
                              ],
                              "items": {
                                "type": "object",
                                "properties": {
                                  "migrationId": {
                                    "type": "string",
                                    "title": "Stateful Migration id",
                                    "example": "smg-1234"
                                  },
                                  "managedInstanceId": {
                                    "type": "string",
                                    "title": "Stateful Node id",
                                    "example": "smi-1234"
                                  },
                                  "instanceId": {
                                    "type": "string",
                                    "title": "AWS EC2 Instance id",
                                    "example": "i-1234"
                                  },
                                  "state": {
                                    "type": "string",
                                    "title": "Current migration state",
                                    "example": "MIGRATE_START"
                                  },
                                  "stateDescription": {
                                    "type": "string",
                                    "title": "Current state description",
                                    "example": "Creating an image from the instance"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:aws:ec2:managedInstance:migration"
                            },
                            "count": {
                              "type": "integer",
                              "example": 2
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/aws/ec2/managedInstance/state": {
      "put": {
        "summary": "Update Stateful Node States",
        "description": "Update the state of multiple Stateful Nodes.\n",
        "operationId": "AWSManagedInstanceUpdateStates",
        "tags": [
          "Stateful Node AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "title": "Update Stateful Node states",
                    "type": "object",
                    "description": "Contains the details of a request to update Stateful Node states.\n",
                    "required": [
                      "managedInstanceStates"
                    ],
                    "properties": {
                      "managedInstanceStates": {
                        "type": "array",
                        "description": "An array of Stateful Node State objects (must contain at least 1 object).\n",
                        "items": {
                          "title": "Stateful Node State",
                          "type": "object",
                          "description": "Contains the details of a Stateful Node state.\n",
                          "required": [
                            "id",
                            "state"
                          ],
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Identifier of the Stateful Node.\n",
                              "example": "smi-12345678"
                            },
                            "state": {
                              "type": "string",
                              "description": "The new state of the Stateful Node.\n",
                              "enum": [
                                "PAUSE",
                                "RESUME"
                              ],
                              "example": "PAUSE"
                            }
                          }
                        },
                        "example": [
                          {
                            "id": "smi-12345678",
                            "state": "PAUSE"
                          },
                          {
                            "id": "smi-12345679",
                            "state": "RESUME"
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update Stateful Node States Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/aws/ec2/managedInstance/state?spotinstAccountId=act-123456"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/audit/events": {
      "get": {
        "summary": "List Audit Log Events",
        "description": "Gets audit events that have response status of 200. This is the default when the responseStatus parameter is not included in the query. When you use responseStatus in the query, you can get all audit events without regard to status.\n\nThe API requires one of the following permissions to be defined in Spot:\n\n* Permission: Organization Viewer (See User Roles) or\n* Action: setup:describeAllAuditEvents (See Access Policies)\n",
        "operationId": "AuditServiceListAll",
        "tags": [
          "Audit Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "fromDate",
            "required": true,
            "description": "Get items on or after this date (Unix timestamp)",
            "example": "1598918400000",
            "schema": {
              "type": "string",
              "format": "string"
            }
          },
          {
            "in": "query",
            "name": "toDate",
            "required": true,
            "description": "Get items on or before this date (Unix timestamp)",
            "example": "1598918400000",
            "schema": {
              "type": "string",
              "format": "string"
            }
          },
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "responseStatus",
            "example": "all",
            "description": "Determines whether the audit events should be filtered by their response status code or not. Valid values: \"success\": Gets only events with status 200. \"all\": Audit events will not be filtered by response status codes, and all the events will be returned. Default: success\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "All Response Statuses (responseStatus=all)",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "user": {
                                    "type": "string",
                                    "example": "test@spot.io"
                                  },
                                  "namespace": {
                                    "type": "string",
                                    "example": "GENERAL"
                                  },
                                  "actionType": {
                                    "type": "string",
                                    "example": "Sign in with SSO"
                                  },
                                  "resourceType": {
                                    "type": "string",
                                    "example": "User"
                                  },
                                  "resourceId": {
                                    "type": "string",
                                    "example": 21126
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2020-06-01T12:17:51.000Z"
                                  },
                                  "context": {
                                    "type": "string",
                                    "example": "{\"body\":{\"email\":\"test@spot.io\",\"isMarketplaceCustomer\":false},\"url\":\"/signIn/sso\",\"query\":{}}"
                                  },
                                  "source": {
                                    "type": "string",
                                    "example": "UI"
                                  },
                                  "agent": {
                                    "type": "string",
                                    "example": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.9.1667.012 Safari/537.36"
                                  },
                                  "responseStatus": {
                                    "type": "integer",
                                    "example": 200
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:audit"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/healthCheck": {
      "post": {
        "summary": "Create Health Check",
        "description": "Create an HCS for Spot Elastigroup.\n",
        "operationId": "HealthCheckServiceCreate",
        "tags": [
          "Health Check Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "healthCheck"
                    ],
                    "properties": {
                      "healthCheck": {
                        "type": "object",
                        "description": "Group",
                        "required": [
                          "proxyAddress",
                          "resourceId"
                        ],
                        "properties": {
                          "resourceId": {
                            "type": "string",
                            "example": "sig-12345",
                            "description": "Spot Resource ID\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "Service-1-healthCheck",
                            "description": "A logical name for the health check\n"
                          },
                          "proxyAddress": {
                            "type": "string",
                            "description": "The public hostname / IP where you installed the Spot HCS\n",
                            "example": "51.22.125.47"
                          },
                          "proxyPort": {
                            "description": "The port of the HCS. Default: 80\n",
                            "type": "integer",
                            "example": 80
                          },
                          "check": {
                            "type": "object",
                            "required": [
                              "protocol",
                              "port",
                              "endpoint",
                              "unhealthyThreshold",
                              "healthyThreshold",
                              "interval",
                              "timeout"
                            ],
                            "properties": {
                              "protocol": {
                                "type": "string",
                                "example": "http",
                                "description": "The protocol to use to connect with the instance. Valid values: http https\n"
                              },
                              "port": {
                                "description": "The port to use to connect with the instance\n",
                                "type": "integer",
                                "example": 80
                              },
                              "endpoint": {
                                "description": "The destination for the request\n",
                                "type": "string",
                                "example": "index.html"
                              },
                              "unhealthyThreshold": {
                                "description": "The number of consecutive failed health checks that must occur before declaring an instance unhealthy\n",
                                "type": "integer",
                                "example": 2
                              },
                              "healthyThreshold": {
                                "description": "The number of consecutive successful health checks that must occur before declaring an instance healthy\n",
                                "type": "integer",
                                "example": 2
                              },
                              "interval": {
                                "description": "The amount of time (in seconds) between each health check. Minimum value is 10\n",
                                "type": "integer",
                                "example": 30
                              },
                              "timeout": {
                                "description": "The amount of time (in seconds) to wait when receiving a response from the health check\n",
                                "type": "integer",
                                "example": 60
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1healthCheck/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Health Checks",
        "description": "Get a list of all HCS services.\n",
        "operationId": "HealthCheckServiceListAllHcs",
        "tags": [
          "Health Check Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "allOf": [
                        {
                          "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "response": {
                              "type": "object",
                              "properties": {
                                "kind": {
                                  "type": "string",
                                  "description": "The data type of each item in the response.\n"
                                },
                                "items": {
                                  "type": "array",
                                  "description": "Array of data objects.\n",
                                  "items": {
                                    "type": "object"
                                  }
                                },
                                "count": {
                                  "type": "integer",
                                  "example": 1,
                                  "description": "Size of the data object array.\n"
                                }
                              }
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "integer",
                                    "example": 1
                                  },
                                  "resourceId": {
                                    "type": "string",
                                    "example": "sig-12345"
                                  },
                                  "name": {
                                    "type": "string",
                                    "example": "Service-1-healthCheck"
                                  },
                                  "proxyAddress": {
                                    "type": "string",
                                    "example": "51.22.125.47"
                                  },
                                  "proxyPort": {
                                    "type": "integer",
                                    "example": 80
                                  },
                                  "check": {
                                    "type": "object",
                                    "properties": {
                                      "protocol": {
                                        "type": "string",
                                        "example": "http"
                                      },
                                      "port": {
                                        "type": "integer",
                                        "example": 80
                                      },
                                      "endpoint": {
                                        "type": "string",
                                        "example": "index.html"
                                      },
                                      "unhealthyThreshold": {
                                        "type": "integer",
                                        "example": 2
                                      },
                                      "healthyThreshold": {
                                        "type": "integer",
                                        "example": 2
                                      },
                                      "interval": {
                                        "type": "integer",
                                        "example": 30
                                      },
                                      "timeout": {
                                        "type": "integer",
                                        "example": 60
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:healthCheck"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/healthCheck/{HEALTHCHECK_ID}": {
      "put": {
        "summary": "Update Health Check",
        "description": "Update existing HCS.\n",
        "operationId": "HealthCheckServiceUpdate",
        "tags": [
          "Health Check Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "path",
            "name": "HEALTHCHECK_ID",
            "example": "hcs-123",
            "description": "The HCS you want to update\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "healthCheck"
                    ],
                    "properties": {
                      "healthCheck": {
                        "type": "object",
                        "description": "Group",
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "Service-1-healthCheck",
                            "description": "A logical name for the health check\n"
                          },
                          "proxyAddress": {
                            "type": "string",
                            "description": "The public hostname / IP where you installed the Spot HCS\n",
                            "example": "51.22.125.47"
                          },
                          "proxyPort": {
                            "description": "The port of the HCS. Default: 80\n",
                            "type": "integer",
                            "example": 80
                          },
                          "check": {
                            "type": "object",
                            "properties": {
                              "protocol": {
                                "type": "string",
                                "example": "http",
                                "description": "The protocol to use to connect with the instance. Valid values: http https\n"
                              },
                              "port": {
                                "description": "The port to use to connect with the instance\n",
                                "type": "integer",
                                "example": 80
                              },
                              "endpoint": {
                                "description": "The destination for the request\n",
                                "type": "string",
                                "example": "index.html"
                              },
                              "unhealthyThreshold": {
                                "description": "The number of consecutive failed health checks that must occur before declaring an instance unhealthy\n",
                                "type": "integer",
                                "example": 2
                              },
                              "healthyThreshold": {
                                "description": "The number of consecutive successful health checks that must occur before declaring an instance healthy\n",
                                "type": "integer",
                                "example": 2
                              },
                              "interval": {
                                "description": "The amount of time (in seconds) between each health check. Minimum value is 10\n",
                                "type": "integer",
                                "example": 30
                              },
                              "timeout": {
                                "description": "The amount of time (in seconds) to wait when receiving a response from the health check\n",
                                "type": "integer",
                                "example": 60
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Health Check",
        "description": "List the information of a particular HCS\n",
        "operationId": "HealthCheckServiceListHcs",
        "tags": [
          "Health Check Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "path",
            "name": "HEALTHCHECK_ID",
            "example": "hcs-123",
            "description": "The HCS you want to update\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1healthCheck/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Health Check",
        "description": "Delete existing HCS\n",
        "operationId": "HealthCheckServiceDelete",
        "tags": [
          "Health Check Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "HEALTHCHECK_ID",
            "example": "hcs-123",
            "description": "The HCS you want to update\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/events/notification/accountPolicy": {
      "put": {
        "summary": "Update Account Notification Policy",
        "description": "Update the account notification policy\n  > **Note:** This service is deprecated. Use the \n  [Notification Center Service](https://spec.dev.spot.io/#tag/Notification-Center-Service).\n",
        "operationId": "NotificationsServiceUpdateAccountNotificationPolicy",
        "tags": [
          "Notification Subscription Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "accountPolicy": {
                        "type": "object",
                        "properties": {
                          "emailPolicy": {
                            "type": "object",
                            "properties": {
                              "statements": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "category": {
                                      "type": "string",
                                      "example": "Elastigroup Errors",
                                      "description": "Event notification category\n"
                                    },
                                    "subCategory": {
                                      "type": "string",
                                      "example": "Launch instances failures",
                                      "description": "Event notification sub category (should match to the event category)\n"
                                    },
                                    "isEnabled": {
                                      "type": "boolean",
                                      "example": true,
                                      "description": "Flag to enable/disable the notification statement\n"
                                    },
                                    "applyOnFutureResources": {
                                      "type": "boolean",
                                      "example": true,
                                      "description": "Flag to set whether to auto apply on newly created resources\n"
                                    },
                                    "allowedResources": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string",
                                            "example": "sig-1234",
                                            "description": "Set resource ID\n"
                                          }
                                        }
                                      }
                                    },
                                    "deniedResources": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string",
                                            "example": "sig-9999",
                                            "description": "List of denied resources for the statement settings\n"
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "slackPolicy": {
                            "type": "object",
                            "properties": {
                              "statements": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "category": {
                                      "type": "string",
                                      "example": "Elastigroup Errors",
                                      "description": "Event notification category\n"
                                    },
                                    "subCategory": {
                                      "type": "string",
                                      "example": "Launch instances failures",
                                      "description": "Event notification sub category (should match to the event category)\n"
                                    },
                                    "isEnabled": {
                                      "type": "boolean",
                                      "example": true,
                                      "description": "Flag to enable/disable the notification statement\n"
                                    },
                                    "applyOnFutureResources": {
                                      "type": "boolean",
                                      "example": true,
                                      "description": "Flag to set whether to auto apply on newly created resources\n"
                                    },
                                    "allowedResources": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string",
                                            "example": "sig-1234",
                                            "description": "Set resource ID\n"
                                          }
                                        }
                                      }
                                    },
                                    "deniedResources": {
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "id": {
                                            "type": "string",
                                            "example": "sig-9999",
                                            "description": "List of denied resources for the statement settings\n"
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Account Notification Policy",
        "description": "Get the account notification policy\n  > **Note:** This service is deprecated. Use the \n  [Notification Center Service](https://spec.dev.spot.io/#tag/Notification-Center-Service).\n",
        "operationId": "NotificationsServiceGetAccountNotificationPolicy",
        "tags": [
          "Notification Subscription Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1events~1notification~1accountPolicy/put/requestBody/content/application~1json/schema/allOf/0"
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/notificationCenter/policy": {
      "post": {
        "summary": "Create Notification Policy",
        "description": "Creates a notification policy. Only for Compute policies.\n",
        "operationId": "notificationPolicyCreate",
        "tags": [
          "Notification Center Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "computePolicyConfig",
                      "privacyLevel"
                    ],
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The name of the notification policy.",
                        "example": "Test Notification Policy"
                      },
                      "description": {
                        "type": "string",
                        "description": "A brief description of the notification policy. Can be null or not empty.",
                        "example": "A description of the notification policy."
                      },
                      "privacyLevel": {
                        "type": "string",
                        "description": "The privacy level of the notification policy.",
                        "enum": [
                          "public",
                          "private"
                        ],
                        "example": "public"
                      },
                      "subscriptions": {
                        "type": "array",
                        "description": "For public policies, you can decide how the notifications are delivered. For example, by email, webhook, slack, sns.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "type": {
                              "type": "string",
                              "enum": [
                                "email",
                                "webhook",
                                "slack",
                                "sns"
                              ],
                              "example": "email"
                            },
                            "endpoint": {
                              "description": "Target endpoint [max limit 500 characters]",
                              "type": "string",
                              "example": "endpoint@example.com"
                            }
                          }
                        }
                      },
                      "registeredUsers": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "userEmail": {
                              "type": "string",
                              "description": "User's email address. The user must be part of the organization.",
                              "example": "user@example.com"
                            },
                            "subscriptionTypes": {
                              "type": "array",
                              "items": {
                                "type": "string",
                                "enum": [
                                  "email",
                                  "console"
                                ],
                                "example": [
                                  "email",
                                  "console"
                                ]
                              }
                            }
                          }
                        }
                      },
                      "isActive": {
                        "type": "boolean",
                        "example": true
                      },
                      "computePolicyConfig": {
                        "type": "object",
                        "description": "You can only use one resource type. For example: All resources (use \"shouldIncludeAllResources\": true), Rule Based Resources (use at least one dynamicRules), OR Individual Resources (use a least one resourceIds).\n",
                        "required": [
                          "events"
                        ],
                        "properties": {
                          "events": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "event": {
                                  "type": "string",
                                  "example": "Event Name"
                                },
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "INFO",
                                    "WARN",
                                    "ERROR"
                                  ],
                                  "example": "INFO"
                                }
                              }
                            }
                          },
                          "shouldIncludeAllResources": {
                            "type": "boolean",
                            "example": false
                          },
                          "resourceIds": {
                            "type": "array",
                            "description": "Manually specified resource IDs to include in the policy. Must be resources related to the account.\n",
                            "example": [
                              "act-123456789",
                              "act-987654321"
                            ],
                            "items": {
                              "type": "string"
                            }
                          },
                          "dynamicRules": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "filterConditions": {
                                  "type": "array",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "identifier": {
                                        "type": "string",
                                        "enum": [
                                          "resource_name",
                                          "resource_id",
                                          "region",
                                          "image",
                                          "tag",
                                          "load_balancer",
                                          "availability_zones",
                                          "security_groups"
                                        ],
                                        "example": "resource_name"
                                      },
                                      "operator": {
                                        "type": "string",
                                        "enum": [
                                          "equals",
                                          "not_equals",
                                          "contains",
                                          "not_contains",
                                          "start_with",
                                          "end_with"
                                        ],
                                        "example": "equals"
                                      },
                                      "expression": {
                                        "type": "string",
                                        "example": "value"
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Notification Policy Create Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/notificationCenter/policy/accountId=act-123456789"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "allOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "Id": {
                                        "type": "string",
                                        "description": "The unique identifier of the notification policy.",
                                        "example": "snp-1a2b3c4d"
                                      }
                                    }
                                  },
                                  {
                                    "$ref": "#/paths/~1notificationCenter~1policy/post/requestBody/content/application~1json/schema/allOf/0"
                                  }
                                ]
                              }
                            },
                            "kind": {
                              "example": "spotinst:notificationPolicy"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get User Notification Policies",
        "description": "Retrieves a list of all notification policies for a specific user.\n",
        "operationId": "userNotificationPolicyList",
        "tags": [
          "Notification Center Service"
        ],
        "responses": {
          "200": {
            "description": "Notification Policy List Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/notificationCenter/policy"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "Notification policy item.\n",
                                "properties": {
                                  "policyId": {
                                    "type": "string",
                                    "description": "The unique identifier of the notification policy.",
                                    "example": "snp-12345"
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "The type of the notification policy.",
                                    "example": "compute"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the notification policy.",
                                    "example": "Test Notification Policy"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "A brief description of the notification policy.",
                                    "example": "A description of the notification policy."
                                  },
                                  "owner": {
                                    "type": "string",
                                    "description": "The owner of the notification policy.",
                                    "example": "user@example.com"
                                  },
                                  "registeredUsersCount": {
                                    "type": "integer",
                                    "description": "The number of registered users for the notification policy.",
                                    "example": 2
                                  },
                                  "isActive": {
                                    "type": "boolean",
                                    "description": "The status of the notification policy.",
                                    "example": true
                                  },
                                  "isRegistered": {
                                    "type": "boolean",
                                    "description": "Indicates if the user is registered for the notification policy.",
                                    "example": true
                                  },
                                  "accountId": {
                                    "type": "string",
                                    "description": "The unique identifier of the account.",
                                    "example": "act-123456789"
                                  },
                                  "notificationMethod": {
                                    "type": "array",
                                    "description": "The notification methods used for the policy.",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "email",
                                        "console"
                                      ]
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:notification:userNotificationPolicy"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/notificationCenter/policy/{policyId}": {
      "get": {
        "summary": "Get Notification Policy",
        "description": "Get configuration for a notification policy.\n",
        "operationId": "notificationPolicyGet",
        "tags": [
          "Notification Center Service"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "policyId",
            "example": "snp-1a2b3c4d",
            "description": "ID for the notification policy.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Notification Policy Get Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/notificationCenter/policy/{policyId}"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "The notification policy.\n",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "readOnly": true,
                                    "description": "The unique identifier of the notification policy.",
                                    "example": "snp-12345"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the notification policy.",
                                    "example": "Test Notification Policy"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "A brief description of the notification policy.",
                                    "example": "A description of the notification policy."
                                  },
                                  "owner": {
                                    "type": "string",
                                    "readOnly": true,
                                    "description": "The owner of the notification policy.",
                                    "example": "user@example.com"
                                  },
                                  "privacyLevel": {
                                    "type": "string",
                                    "description": "The privacy level of the notification policy.",
                                    "enum": [
                                      "public",
                                      "private"
                                    ],
                                    "example": "public"
                                  },
                                  "subscriptions": {
                                    "$ref": "#/paths/~1notificationCenter~1policy/post/requestBody/content/application~1json/schema/allOf/0/properties/subscriptions"
                                  },
                                  "registeredUsers": {
                                    "$ref": "#/paths/~1notificationCenter~1policy/post/requestBody/content/application~1json/schema/allOf/0/properties/registeredUsers"
                                  },
                                  "isActive": {
                                    "type": "boolean",
                                    "example": true
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "compute"
                                    ],
                                    "example": "compute"
                                  },
                                  "computePolicyConfig": {
                                    "type": "array",
                                    "items": {
                                      "allOf": [
                                        {
                                          "$ref": "#/paths/~1notificationCenter~1policy/post/requestBody/content/application~1json/schema/allOf/0/properties/computePolicyConfig"
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "accountId": {
                                              "type": "string",
                                              "description": "The unique identifier of the account.",
                                              "example": "acc-123456789"
                                            }
                                          }
                                        }
                                      ]
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:notificationPolicy"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Notification Policy",
        "description": "Update a notification policy (only for Compute policies). You can do a partial update of just the fields you want to.\n",
        "operationId": "notificationPolicyUpdate",
        "tags": [
          "Notification Center Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1notificationCenter~1policy~1%7BpolicyId%7D/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "The name of the notification policy.",
                        "example": "Test Notification Policy"
                      },
                      "description": {
                        "type": "string",
                        "description": "A brief description of the notification policy. Can be null or not empty.",
                        "example": "A description of the notification policy."
                      },
                      "subscriptions": {
                        "$ref": "#/paths/~1notificationCenter~1policy/post/requestBody/content/application~1json/schema/allOf/0/properties/subscriptions"
                      },
                      "registeredUsers": {
                        "$ref": "#/paths/~1notificationCenter~1policy/post/requestBody/content/application~1json/schema/allOf/0/properties/registeredUsers"
                      },
                      "isActive": {
                        "type": "boolean",
                        "example": true
                      },
                      "computePolicyConfig": {
                        "$ref": "#/paths/~1notificationCenter~1policy/post/requestBody/content/application~1json/schema/allOf/0/properties/computePolicyConfig"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ok"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Notification Policy",
        "description": "Delete a notification policy.\n",
        "operationId": "notificationPolicyDelete",
        "tags": [
          "Notification Center Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1notificationCenter~1policy~1%7BpolicyId%7D/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Notification Policy Delete Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/notificationCenter/policy/snp-a1b2c3d4"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/notificationCenter/compute/resource": {
      "get": {
        "summary": "Get Account Resources",
        "description": "Gets a list of all resources for a specific account.   \n",
        "operationId": "AccountResourceList",
        "tags": [
          "Notification Center Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Account Resource List Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/notificationCenter/compute/resource/act-123456789"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "Account Resource.\n",
                                "properties": {
                                  "Id": {
                                    "type": "string",
                                    "description": "The unique identifier of the account.",
                                    "example": "act-123456789"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the account.",
                                    "example": "Example for account name"
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "The type of the resource.",
                                    "example": "ocean"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:notification:compute:accountResource"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/notificationCenter/compute/event": {
      "get": {
        "summary": "Get Events Types",
        "description": "Gets all available event types for the notification policies, depending on your account provider.\n",
        "operationId": "EventTypeList",
        "tags": [
          "Notification Center Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Event Type List Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/notificationCenter/compute/event/act-123456789"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "Event type for the notification policy.\n",
                                "properties": {
                                  "event": {
                                    "type": "string",
                                    "description": "The event name.",
                                    "example": "Missing configuration"
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "The severity level of the event.",
                                    "example": "error"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:notification:compute:event"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/events/subscription": {
      "post": {
        "summary": "Subscribe",
        "description": "Create a notification for your resources\n  > **Note:** This service is deprecated. Use the \n  [Notification Center Service](https://spec.dev.spot.io/#tag/Notification-Center-Service).\n",
        "operationId": "notificationsServiceSubscriptionsSubscribe",
        "tags": [
          "Notification Subscription Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "Elastigroup/Stateful Node event",
                    "required": [
                      "subscription"
                    ],
                    "properties": {
                      "subscription": {
                        "type": "object",
                        "required": [
                          "resourceId",
                          "protocol",
                          "endpoint",
                          "eventType"
                        ],
                        "description": "Object defining the subscription parameters\n",
                        "properties": {
                          "resourceId": {
                            "type": "string",
                            "example": "sig-1234abcd",
                            "description": "Spot Resource ID (Elastigroup ID, Ocean ID or Stateful Node ID)\n"
                          },
                          "protocol": {
                            "type": "string",
                            "enum": [
                              "aws-sns",
                              "email",
                              "email-json",
                              "web"
                            ],
                            "example": "email",
                            "description": "The protocol to send the notification.\n\nThe following values are deprecated: http https\nYou can use the generic web protocol instead.\naws-sns is only supported with AWS provider\n"
                          },
                          "endpoint": {
                            "type": "string",
                            "example": "YOUR@EMAIL.COM",
                            "description": "The endpoint the notification will be sent to. url in case of http/https/web, email address in case of email/email-json and sns-topic-arn in case of aws-sns.\nFor example: YOUR@EMAIL.COM or https://YOUR_ENDPOINT.COM or SNS_TOPIC_ARN\n"
                          },
                          "eventType": {
                            "enum": [
                              "AWS_EC2_INSTANCE_TERMINATE",
                              "AWS_EC2_INSTANCE_TERMINATED",
                              "AWS_EC2_INSTANCE_LAUNCH",
                              "AWS_EC2_INSTANCE_READY_SIGNAL_TIMEOUT",
                              "SIGNAL_TIMEOUT_SHUTDOWN_SCRIPT",
                              "AWS_EC2_CANT_SPIN_OD",
                              "AWS_EC2_INSTANCE_UNHEALTHY_IN_ELB",
                              "GROUP_ROLL_FAILED",
                              "GROUP_ROLL_FINISHED",
                              "CANT_SCALE_UP_GROUP_MAX_CAPACITY",
                              "GROUP_UPDATED",
                              "AWS_EMR_PROVISION_TIMEOUT",
                              "GROUP_BEANSTALK_INIT_READY",
                              "AZURE_VM_TERMINATED",
                              "AZURE_VM_TERMINATE",
                              "AWS_EC2_MANAGED_INSTANCE_PAUSING",
                              "AWS_EC2_MANAGED_INSTANCE_RESUMING",
                              "AWS_EC2_MANAGED_INSTANCE_RECYCLING",
                              "AWS_EC2_MANAGED_INSTANCE_DELETING"
                            ],
                            "type": "string",
                            "example": "AWS_EC2_INSTANCE_TERMINATE",
                            "description": "The event to send the notification when triggered.\n"
                          },
                          "eventFormat": {
                            "type": "object",
                            "description": "The format of the notification content (JSON Format: Key + Value).\nThe keys can be renamed.\n",
                            "properties": {
                              "event": {
                                "type": "string",
                                "enum": [
                                  "%event%"
                                ],
                                "description": "Allow to get name of event that happened",
                                "example": "%event%"
                              },
                              "resourceId": {
                                "type": "string",
                                "enum": [
                                  "%resource-id%"
                                ],
                                "description": "Allow to get ID of resource where event happened",
                                "example": "%resource-id%"
                              },
                              "resourceName": {
                                "type": "string",
                                "enum": [
                                  "%resource-name%"
                                ],
                                "description": "Allow to get the name of resource (related to ID)",
                                "example": "%resource-name%"
                              },
                              "instanceId": {
                                "type": "string",
                                "enum": [
                                  "%instance-id%"
                                ],
                                "description": "Allow to get the instance ID which related to the event",
                                "example": "%instance-id%"
                              },
                              "myCustomKey": {
                                "type": "string",
                                "description": "Allow to use custom text in messages",
                                "example": "My content is set here"
                              }
                            }
                          }
                        }
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "Ocean event",
                    "required": [
                      "subscription"
                    ],
                    "properties": {
                      "subscription": {
                        "type": "object",
                        "required": [
                          "resourceId",
                          "protocol",
                          "endpoint",
                          "eventType"
                        ],
                        "description": "Object defining the subscription parameters\n",
                        "properties": {
                          "resourceId": {
                            "type": "string",
                            "example": "o-1234abcd",
                            "description": "Spot Resource ID (Elastigroup ID, Ocean ID or Stateful Node ID)\n"
                          },
                          "protocol": {
                            "type": "string",
                            "enum": [
                              "aws-sns",
                              "email",
                              "email-json",
                              "web"
                            ],
                            "example": "email",
                            "description": "The protocol to send the notification.\n\nThe following values are deprecated: http https\nYou can use the generic web protocol instead.\naws-sns is only supported with AWS provider\n"
                          },
                          "endpoint": {
                            "type": "string",
                            "example": "YOUR@EMAIL.COM",
                            "description": "The endpoint the notification will be sent to. url in case of http/https/web, email address in case of email/email-json and sns-topic-arn in case of aws-sns.\nFor example: YOUR@EMAIL.COM or https://YOUR_ENDPOINT.COM or SNS_TOPIC_ARN\n"
                          },
                          "eventType": {
                            "enum": [
                              "AWS_EC2_INSTANCE_TERMINATE",
                              "AWS_EC2_INSTANCE_TERMINATED",
                              "AWS_EC2_INSTANCE_LAUNCH",
                              "AWS_EC2_INSTANCE_READY_SIGNAL_TIMEOUT",
                              "SIGNAL_TIMEOUT_SHUTDOWN_SCRIPT",
                              "AWS_EC2_CANT_SPIN_OD",
                              "AWS_EC2_INSTANCE_UNHEALTHY_IN_ELB",
                              "GROUP_ROLL_FAILED",
                              "GROUP_ROLL_FINISHED",
                              "CANT_SCALE_UP_GROUP_MAX_CAPACITY",
                              "GROUP_UPDATED",
                              "AWS_EMR_PROVISION_TIMEOUT",
                              "GROUP_BEANSTALK_INIT_READY",
                              "AZURE_VM_TERMINATED",
                              "AZURE_VM_TERMINATE",
                              "AWS_EC2_MANAGED_INSTANCE_PAUSING",
                              "AWS_EC2_MANAGED_INSTANCE_RESUMING",
                              "AWS_EC2_MANAGED_INSTANCE_RECYCLING",
                              "AWS_EC2_MANAGED_INSTANCE_DELETING",
                              "CLUSTER_ROLL_FINISHED",
                              "CLUSTER_ROLL_FAILED",
                              "OCEAN_CANT_SCALE_UP_MAX_RESOURCES",
                              "OCEAN_LAUNCH_SPEC_CANT_SCALE_UP_MAX_INSTANCES",
                              "OCEAN_K8S_NODE_REMOVED"
                            ],
                            "type": "string",
                            "example": "OCEAN_K8S_NODE_REMOVED",
                            "description": "The event to send the notification when triggered. \\\nThe following event types are relevant for Ocean events only: \\\nCLUSTER_ROLL_FINISHED, \\\nCLUSTER_ROLL_FAILED, \\\nOCEAN_CANT_SCALE_UP_MAX_RESOURCES, \\\nOCEAN_LAUNCH_SPEC_CANT_SCALE_UP_MAX_INSTANCES, \\\nOCEAN_K8S_NODE_REMOVED\n"
                          },
                          "eventFormat": {
                            "type": "object",
                            "description": "The format of the notification content (JSON Format: Key + Value).\nThe keys can be renamed.\n",
                            "properties": {
                              "event": {
                                "type": "string",
                                "enum": [
                                  "%event%"
                                ],
                                "description": "Allow to get name of event that happened",
                                "example": "%event%"
                              },
                              "resourceId": {
                                "type": "string",
                                "enum": [
                                  "%resource-id%"
                                ],
                                "description": "Allow to get ID of resource where event happened",
                                "example": "%resource-id%"
                              },
                              "resourceName": {
                                "type": "string",
                                "enum": [
                                  "%resource-name%"
                                ],
                                "description": "Allow to get the name of resource (related to ID)",
                                "example": "%resource-name%"
                              },
                              "instanceId": {
                                "type": "string",
                                "enum": [
                                  "%instance-id%"
                                ],
                                "description": "Allow to get the instance ID which related to the event",
                                "example": "%instance-id%"
                              },
                              "launchSpecId": {
                                "type": "string",
                                "enum": [
                                  "%launchSpec-id%"
                                ],
                                "description": "Allow to get the Virtual Node Group ID which related to the event",
                                "example": "%launchSpec-id%"
                              },
                              "launchSpecName": {
                                "type": "string",
                                "enum": [
                                  "%launchSpec-name%"
                                ],
                                "description": "Allow to get the Virtual Node Group name which related to the event (relevant only for OCEAN_K8S_NODE_REMOVED)",
                                "example": "%launchSpec-name%"
                              },
                              "nodeName": {
                                "type": "string",
                                "enum": [
                                  "%node-name%"
                                ],
                                "description": "Allow to get the node name which related to the event (relevant only for OCEAN_K8S_NODE_REMOVED)",
                                "example": "%node-name%"
                              },
                              "runningPodsOnNode": {
                                "type": "string",
                                "enum": [
                                  "%running-pods-on-node%"
                                ],
                                "description": "Allow to get the running pods on the node which related to the event (relevant only for OCEAN_K8S_NODE_REMOVED)",
                                "example": "%running-pods-on-node%"
                              },
                              "myCustomKey": {
                                "type": "string",
                                "description": "Allow to use custom text in messages",
                                "example": "My content is set here"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1events~1subscription/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Subscriptions",
        "description": "List all subscriptions and their information\n  > **Note:** This service is deprecated. Use the \n  [Notification Center Service](https://spec.dev.spot.io/#tag/Notification-Center-Service).\n",
        "operationId": "notificationsServiceSubscriptionsList",
        "tags": [
          "Notification Subscription Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Subscription Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/events/subscription"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "example": "sis-1234abcd"
                                  },
                                  "resourceId": {
                                    "type": "string",
                                    "example": "sig-1234abcd"
                                  },
                                  "resourceName": {
                                    "type": "string",
                                    "example": "myGroup"
                                  },
                                  "protocol": {
                                    "type": "string",
                                    "example": "email"
                                  },
                                  "endpoint": {
                                    "type": "string",
                                    "example": "YOUR@EMAIL.COM"
                                  },
                                  "eventType": {
                                    "type": "string",
                                    "example": "AWS_EC2_INSTANCE_TERMINATE"
                                  },
                                  "eventFormat": {
                                    "type": "object",
                                    "description": "The format of the notification content (JSON Format: Key + Value).\nThe keys can be renamed.\n",
                                    "properties": {
                                      "event": {
                                        "type": "string",
                                        "enum": [
                                          "%event%"
                                        ],
                                        "description": "Allow to get name of event that happened",
                                        "example": "%event%"
                                      },
                                      "resourceId": {
                                        "type": "string",
                                        "enum": [
                                          "%resource-id%"
                                        ],
                                        "description": "Allow to get ID of resource where event happened",
                                        "example": "%resource-id%"
                                      },
                                      "resourceName": {
                                        "type": "string",
                                        "enum": [
                                          "%resource-name%"
                                        ],
                                        "description": "Allow to get the name of resource (related to ID)",
                                        "example": "%resource-name%"
                                      },
                                      "instanceId": {
                                        "type": "string",
                                        "enum": [
                                          "%instance-id%"
                                        ],
                                        "description": "Allow to get the instance ID which related to the event",
                                        "example": "%instance-id%"
                                      },
                                      "myCustomKey": {
                                        "type": "string",
                                        "description": "Allow to use custom text in messages",
                                        "example": "My content is set here"
                                      }
                                    }
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "example": "2015-08-04T12:31:26.000Z"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2015-08-04T12:31:26.000Z"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:subscription"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/events/subscription/{subscriptionId}": {
      "delete": {
        "summary": "Unsubscribe",
        "description": "Delete an existing page\n  > **Note:** This service is deprecated. Use the \n  [Notification Center Service](https://spec.dev.spot.io/#tag/Notification-Center-Service).\n",
        "operationId": "notificationsServiceSubscriptionsUnsubscribe",
        "tags": [
          "Notification Subscription Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "$ref": "#/paths/~1events~1subscription~1%7BsubscriptionId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1gcp~1gce~1group~1%7BgroupId%7D/delete/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Subscription",
        "description": "Get a specific notification and its information\n  > **Note:** This service is deprecated. Use the \n  [Notification Center Service](https://spec.dev.spot.io/#tag/Notification-Center-Service).\n",
        "operationId": "notificationsServiceSubscriptionsGet",
        "tags": [
          "Notification Subscription Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "path",
            "name": "subscriptionId",
            "example": "sis-1234abcd",
            "description": "The subscription ID to operate on.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1events~1subscription/get/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Subscription",
        "description": "Update existing notification\n  > **Note:** This service is deprecated. Use the \n  [Notification Center Service](https://spec.dev.spot.io/#tag/Notification-Center-Service).\n",
        "operationId": "notificationsServiceSubscriptionsUpdate",
        "tags": [
          "Notification Subscription Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "$ref": "#/paths/~1events~1subscription~1%7BsubscriptionId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "subscription"
                    ],
                    "properties": {
                      "subscription": {
                        "type": "object",
                        "description": "Element that store all the subscription config",
                        "properties": {
                          "endpoint": {
                            "type": "string",
                            "description": "The endpoint the notification will be sent to. url in case of http/https/web, email address in case of email/email-json and sns-topic-arn in case of aws-sns",
                            "example": "SNS_TOPIC_ARN"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update Subscription Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/events/subscription/sis-56879d5c?accountId=act-123abc",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "PUT",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            },
                            "affectedRows": {
                              "type": "integer",
                              "example": 1
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/insights/dataIntegration": {
      "post": {
        "summary": "Create Data Integration",
        "description": "Create a new data integration, an object representing a connection to a third-party vendor to export to and import data from.\n",
        "operationId": "DataIntegrationCreate",
        "tags": [
          "Insights Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "dataIntegration": {
                    "type": "object",
                    "required": [
                      "vendor",
                      "name",
                      "config"
                    ],
                    "properties": {
                      "vendor": {
                        "type": "string",
                        "description": "The vendor for the data integration. This value affects the expected `config`.",
                        "enum": [
                          "s3",
                          "azureBlob"
                        ]
                      },
                      "name": {
                        "description": "The name of the data integration.",
                        "type": "string",
                        "example": "my-s3-integration"
                      },
                      "config": {
                        "description": "The config of this data integration. Depends on the value of `vendor`.",
                        "oneOf": [
                          {
                            "type": "object",
                            "title": "S3",
                            "required": [
                              "bucketName"
                            ],
                            "properties": {
                              "bucketName": {
                                "type": "string",
                                "description": "The name of the bucket to use. Your spot IAM Role policy needs to include s3:putObject permissions for this bucket.\n**Can't be null**.\n",
                                "example": "mybucket"
                              },
                              "subdir": {
                                "description": "The subdirectory in which your files will be stored within the bucket. Adds the prefix `subdir/` to new objects' keys.\n**Can't be null or contain '/'**.\n",
                                "type": "string",
                                "example": "dev"
                              }
                            }
                          },
                          {
                            "type": "object",
                            "title": "Azure Blob",
                            "required": [
                              "storageAccount",
                              "container"
                            ],
                            "properties": {
                              "storageAccount": {
                                "type": "string",
                                "description": "The name of the storage account to use.\n",
                                "example": "myStorageAccount"
                              },
                              "container": {
                                "description": "The container in which your files will be stored within the storage account.\n",
                                "type": "string",
                                "example": "dev"
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create Data Integration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/insights/dataIntegration"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1insights~1dataIntegration/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:dataIntegration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Data Integration",
        "description": "List data integrations.\n",
        "operationId": "dataIntegrationList",
        "tags": [
          "Insights Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "vendor",
            "description": "The vendor of the data integrations to list.",
            "example": "s3",
            "schema": {
              "type": "string",
              "enum": [
                "s3",
                "azureBlob"
              ]
            }
          },
          {
            "in": "query",
            "name": "name",
            "description": "The name of the data integrations to list.",
            "example": "my-data-integration",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "description": "The status of the data integrations to list.",
            "example": "enabled",
            "schema": {
              "type": "string",
              "enum": [
                "enabled",
                "disabled"
              ]
            }
          },
          {
            "in": "query",
            "name": "health",
            "description": "The health status of the data integrations to list.",
            "example": "valid",
            "schema": {
              "type": "string",
              "enum": [
                "valid",
                "invalid",
                "forbidden"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get Data Integration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/insights/dataIntegration"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "required": [
                                  "vendor",
                                  "name",
                                  "config"
                                ],
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "The identifier of the data integration.",
                                    "example": "di-123"
                                  },
                                  "vendor": {
                                    "type": "string",
                                    "description": "The vendor for the data integration. This value affects the expected `config`.",
                                    "enum": [
                                      "s3",
                                      "azureBlob"
                                    ]
                                  },
                                  "name": {
                                    "description": "The name of the data integration.",
                                    "type": "string",
                                    "example": "my-s3-integration"
                                  },
                                  "status": {
                                    "type": "string",
                                    "description": "Determines if this data integration is on or off.",
                                    "enum": [
                                      "enabled",
                                      "disabled"
                                    ]
                                  },
                                  "health": {
                                    "type": "string",
                                    "description": "The health of this data integration.",
                                    "example": "valid"
                                  },
                                  "code": {
                                    "type": "integer",
                                    "description": "The HTTP status code representing the health.",
                                    "example": 200
                                  },
                                  "message": {
                                    "type": "string",
                                    "description": "The message received from the vendor in the last health update.",
                                    "example": "ok"
                                  },
                                  "lastHealthCheck": {
                                    "type": "string",
                                    "description": "The time the health was last updated in UTC.",
                                    "example": "2021-08-1T10:00:00.000Z"
                                  },
                                  "config": {
                                    "description": "The config of this data integration. Depends on the value of `vendor`.",
                                    "oneOf": [
                                      {
                                        "$ref": "#/paths/~1insights~1dataIntegration/post/requestBody/content/application~1json/schema/properties/dataIntegration/properties/config/oneOf/0"
                                      },
                                      {
                                        "$ref": "#/paths/~1insights~1dataIntegration/post/requestBody/content/application~1json/schema/properties/dataIntegration/properties/config/oneOf/1"
                                      }
                                    ]
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:dataIntegration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/insights/dataIntegration/{dataIntegrationId}": {
      "put": {
        "summary": "Update Data Integration",
        "description": "Update an existing data integration.\n",
        "operationId": "updateDataIntegration",
        "tags": [
          "Insights Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "dataIntegrationId",
            "example": "di-123abc",
            "description": "Identifier of the data integration.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "dataIntegration": {
                    "type": "object",
                    "required": [
                      "vendor"
                    ],
                    "properties": {
                      "vendor": {
                        "type": "string",
                        "description": "The vendor for the data integration. This value affects the expected `config`.\n**This value is immutable and must be the same as the existing data integration.**\n",
                        "enum": [
                          "s3",
                          "azureBlob"
                        ]
                      },
                      "name": {
                        "description": "The name of the data integration.",
                        "type": "string",
                        "example": "my-s3-integration"
                      },
                      "status": {
                        "type": "string",
                        "description": "Determines if this data integration is on or off.",
                        "enum": [
                          "enabled",
                          "disabled"
                        ]
                      },
                      "config": {
                        "description": "The config of this data integration. Depends on the value of `vendor`.",
                        "oneOf": [
                          {
                            "type": "object",
                            "title": "S3",
                            "properties": {
                              "bucketName": {
                                "type": "string",
                                "description": "The name of the bucket to use. Your spot IAM Role policy needs to include s3:putObject permissions for this bucket.\n**Can't be null**.\n",
                                "example": "mybucket"
                              },
                              "subdir": {
                                "description": "The subdirectory in which your files will be stored within the bucket. Adds the prefix `subdir/` to new objects' keys.\n**Can't be null or contain '/'**.\n",
                                "type": "string",
                                "example": "dev"
                              }
                            }
                          },
                          {
                            "type": "object",
                            "title": "Azure Blob",
                            "properties": {
                              "storageAccount": {
                                "type": "string",
                                "description": "The name of the storage account to use.\n",
                                "example": "myStorageAccount"
                              },
                              "container": {
                                "description": "The container in which your files will be stored within the storage account.\n",
                                "type": "string",
                                "example": "dev"
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update Data Integration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/insights/dataIntegration/di-123"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1insights~1dataIntegration/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:dataIntegration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Data Integration",
        "description": "Get an existing data integration.\n",
        "operationId": "dataIntegrationGet",
        "tags": [
          "Insights Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1insights~1dataIntegration~1%7BdataIntegrationId%7D/put/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Get Data Integration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/insights/dataIntegration/di-123"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1insights~1dataIntegration/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:dataIntegration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Data Integration",
        "description": "Delete an existing data integration.\n",
        "operationId": "dataIntegrationDelete",
        "tags": [
          "Insights Service"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1insights~1dataIntegration~1%7BdataIntegrationId%7D/put/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Delete Data Integration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/insights/dataIntegration/di-123"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/account/{accountId}": {
      "put": {
        "summary": "Update Account",
        "description": "Update information in an account such as the account name and slack channel. To use this command, permissions for organization admin are required. Granular permissions will require access policies with the following actions: setup:updateAccount\n",
        "operationId": "OrganizationsAndAccountsUpdateAccount",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "accountId",
            "example": "act-123456789",
            "description": "The ID of the account you want to update.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "account"
                    ],
                    "properties": {
                      "account": {
                        "type": "object",
                        "description": "Used for updating items in an account.",
                        "properties": {
                          "slackNotificationChannels": {
                            "type": "array",
                            "description": "List of strings containing the URLs of the slack channels to be added.",
                            "items": {
                              "type": "string",
                              "example": [
                                "https://hooks.slack.com/services/SLACK_ID",
                                "https://hooks.slack.com/services/SLACK_ID"
                              ]
                            }
                          },
                          "name": {
                            "type": "string",
                            "description": "The new name of the account. Cannot be null or empty.",
                            "example": "ACCOUNT_NAME"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update Account Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/account/act-4fb595c6?accountId=act-4fb595c6",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "PUT",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Account",
        "description": "Delete a Spot Account. The Spot Account ID can be obtained from your Spot console via the following link: https://console.spotinst.com/#/settings/account/general . Note This cannot be undone – take caution. Only Organization Admins can perform this action. In case you want to delete your default Spot account which is the account visible when you first log in please contact Support.\n",
        "operationId": "OrganizationsAndAccountsDeleteAccount",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "accountId",
            "example": "act-123456789",
            "description": "The ID of the account you want to delete.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Delete Account Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/account/act-123456",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "DELETE",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/user": {
      "get": {
        "summary": "Get Users",
        "description": "Get all users in the organization, their details, and mapped accounts. Providing the optional account ID parameter will filter out all users not mapped to that account.\n",
        "operationId": "GetAccountsUsers",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account you would like to get retrieve users from\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Get Account Users Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/user?accountId=act-123456789",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group:log",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "mappedAccountIds": {
                                        "type": "string",
                                        "description": "A list of account IDs",
                                        "example": [
                                          "act-0b18f123",
                                          "act-0b18f124",
                                          "act-0b18f125"
                                        ]
                                      },
                                      "userId": {
                                        "type": "string",
                                        "description": "User ID",
                                        "example": "u-19265"
                                      },
                                      "displayName": {
                                        "type": "string",
                                        "description": "The name",
                                        "example": "test"
                                      },
                                      "email": {
                                        "type": "string",
                                        "description": "Email",
                                        "example": "test@spot.io"
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "mappedAccountIds": {
                                        "type": "string",
                                        "description": "A list of account IDs",
                                        "example": [
                                          "act-0b18f123",
                                          "act-0b18f124",
                                          "act-0b18f125"
                                        ]
                                      },
                                      "userId": {
                                        "type": "string",
                                        "description": "User ID",
                                        "example": "u-19266"
                                      },
                                      "displayName": {
                                        "type": "string",
                                        "description": "The name",
                                        "example": "test"
                                      },
                                      "email": {
                                        "type": "string",
                                        "description": "Email",
                                        "example": "abc@google.com"
                                      }
                                    }
                                  }
                                ]
                              },
                              "example": [
                                {
                                  "mappedAccountIds": [
                                    "act-0b18f123",
                                    "act-0b18f124",
                                    "act-0b18f125"
                                  ],
                                  "userId": "u-19265",
                                  "displayName": "test",
                                  "email": "test@spot.io"
                                },
                                {
                                  "mappedAccountIds": [
                                    "act-0b18f123",
                                    "act-0b18f124",
                                    "act-0b18f125"
                                  ],
                                  "userId": "u-19266",
                                  "displayName": "test",
                                  "email": "abc@google.com"
                                }
                              ]
                            },
                            "count": {
                              "type": "integer",
                              "example": 2,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "summary": "Create User",
        "description": "Create a new user and link it to the creator's organization (the organization ID from the personal token attached to the API call). If the role is a viewer, the user is also linked to the default account for the organization.",
        "operationId": "OrganizationsAndAccountsCreateUser",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "generateToken",
            "example": true,
            "description": "If `true`, then the response will include `personalAccessToken` string\n",
            "schema": {
              "type": "boolean"
            },
            "required": false
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "firstName": {
                        "type": "string",
                        "description": "The first name of the user. Note: names cannot include these characters: + = @\n",
                        "example": "Test"
                      },
                      "lastName": {
                        "type": "string",
                        "description": "The last name of the user. Note: names cannot include these characters: + = @\n",
                        "example": "Test"
                      },
                      "email": {
                        "type": "string",
                        "description": "Email",
                        "example": "test@spot.io"
                      },
                      "password": {
                        "type": "string",
                        "description": "Password",
                        "example": "password1234"
                      },
                      "role": {
                        "type": "string",
                        "description": "User's role",
                        "example": "viewer"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create User Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/user/?generateToken=true",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:setup:user",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:setup:user",
                                "properties": {
                                  "id": {
                                    "type": "integer",
                                    "description": "User's old ID (DEPRECATED)",
                                    "example": 9056
                                  },
                                  "firstName": {
                                    "type": "string",
                                    "description": "First Name",
                                    "example": "Test"
                                  },
                                  "lastName": {
                                    "type": "string",
                                    "description": "Last Name",
                                    "example": "Test"
                                  },
                                  "displayName": {
                                    "type": "string",
                                    "description": "First Name + Last Name",
                                    "example": "Test Test"
                                  },
                                  "email": {
                                    "type": "string",
                                    "description": "Email",
                                    "example": "test@gmail.com"
                                  },
                                  "organizationId": {
                                    "type": "integer",
                                    "description": "ID of Organization in Spot Console",
                                    "example": 606079860000
                                  },
                                  "personalAccessToken": {
                                    "type": "integer",
                                    "description": "ID of Organization in Spot Console",
                                    "example": "..."
                                  },
                                  "userId": {
                                    "type": "string",
                                    "description": "User's ID",
                                    "example": "u-1a2b3c4d"
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/organization/user": {
      "get": {
        "summary": "Get Users",
        "description": "Get all the users of the organization.\n",
        "operationId": "GetOrganizationUsers",
        "tags": [
          "Organizations"
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/organization/user",
                            "method": "GET",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        },
                        "response": {
                          "properties": {
                            "kind": {
                              "example": "spotinst:setup:organization:user"
                            },
                            "count": {
                              "example": 2
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "userId": {
                                    "type": "string",
                                    "description": "user id"
                                  },
                                  "username": {
                                    "type": "string",
                                    "description": "user name"
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "personal",
                                      "programmatic"
                                    ],
                                    "description": "user type"
                                  },
                                  "email": {
                                    "type": "string",
                                    "description": "user's email"
                                  },
                                  "mfa": {
                                    "type": "boolean",
                                    "description": "is validated by mfa"
                                  },
                                  "groupNames": {
                                    "type": "array",
                                    "description": "A list of the groups names that the given user is registered to",
                                    "items": {
                                      "type": "string"
                                    }
                                  }
                                }
                              },
                              "example": [
                                {
                                  "userId": "u-a1b2c3d4",
                                  "username": "John Doe",
                                  "type": "personal",
                                  "email": "john.doe@company.com",
                                  "mfa": "false",
                                  "groupNames": [
                                    "Developers",
                                    "DevOps"
                                  ]
                                },
                                {
                                  "userId": "u-4d3c2b1a",
                                  "userName": "Jane Doe",
                                  "type": "personal",
                                  "email": "jane.doe@company.com",
                                  "mfa": "true",
                                  "groupNames": [
                                    "DevOps",
                                    "IT"
                                  ]
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/organization/policy": {
      "get": {
        "summary": "Get Policies",
        "description": "Get all the policies of the organization.\n",
        "operationId": "GetOrganizationPolicies",
        "tags": [
          "Organizations"
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/organization/policy",
                            "method": "GET",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        },
                        "response": {
                          "properties": {
                            "kind": {
                              "example": "spotinst:setup:organization:policy"
                            },
                            "count": {
                              "example": 2
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "policy id"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "policy name"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "policy description"
                                  },
                                  "type": {
                                    "type": "string",
                                    "enum": [
                                      "ACCOUNT",
                                      "ORGANIZATION"
                                    ],
                                    "description": "policy type"
                                  },
                                  "policyContent": {
                                    "type": "object",
                                    "properties": {
                                      "statements": {
                                        "type": "array",
                                        "description": "policy statements",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "effect": {
                                              "type": "string",
                                              "description": "ALLOW / DENY"
                                            },
                                            "actions": {
                                              "type": "array",
                                              "description": "actions that the policy covers (can be with regex expressions)",
                                              "items": {
                                                "type": "string"
                                              }
                                            },
                                            "resources": {
                                              "type": "array",
                                              "description": "resources that the policy covers (can be with regex expressions)",
                                              "items": {
                                                "type": "string"
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "example": [
                                {
                                  "id": "pol-a1b2c3d4",
                                  "name": "Developers",
                                  "description": "A policy that contains permissions for developers",
                                  "type": "ORGANIZATION",
                                  "policyContent": {
                                    "statements": [
                                      {
                                        "effect": "ALLOW",
                                        "actions": [
                                          "elastigroup:createGroup",
                                          "elastigroup:updateGroup"
                                        ],
                                        "resources": [
                                          "*"
                                        ]
                                      }
                                    ]
                                  },
                                  "createdAt": "2021-12-19T13:44:13.000+0000",
                                  "updatedAt": "2022-01-02T22:04:29.000+0000"
                                },
                                {
                                  "id": "pol-87654321",
                                  "name": "DevOps",
                                  "description": "A policy that contains permissions for DevOps",
                                  "type": "ACCOUNT",
                                  "policyContent": {
                                    "statements": [
                                      {
                                        "effect": "ALLOW",
                                        "actions": [
                                          "setup:updatePolicy"
                                        ],
                                        "resources": [
                                          "*"
                                        ]
                                      }
                                    ]
                                  },
                                  "createdAt": "2021-12-19T13:44:13.000+0000",
                                  "updatedAt": "2022-01-02T22:04:29.000+0000"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/user/{userId}": {
      "get": {
        "summary": "Get User Details",
        "description": "Get all the details of a given user.\n",
        "operationId": "GetUserDetails",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "example": "u-1234abcd",
            "description": "Identifier of a user.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/user/u-1234abcd",
                            "method": "GET",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        },
                        "response": {
                          "properties": {
                            "kind": {
                              "example": "spotinst:setup:access:user"
                            },
                            "count": {
                              "example": 1
                            },
                            "items": {
                              "type": "object",
                              "properties": {
                                "userId": {
                                  "type": "string",
                                  "description": "user id"
                                },
                                "username": {
                                  "type": "string",
                                  "description": "user name"
                                },
                                "type": {
                                  "type": "string",
                                  "enum": [
                                    "personal",
                                    "programmatic"
                                  ],
                                  "description": "user type"
                                },
                                "email": {
                                  "type": "string",
                                  "description": "user's email"
                                },
                                "mfa": {
                                  "type": "boolean",
                                  "description": "is validated by mfa"
                                },
                                "groups": {
                                  "type": "array",
                                  "description": "the groups that the given user is registered to",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "description": "user group id"
                                      },
                                      "name": {
                                        "type": "string",
                                        "description": "user group name"
                                      },
                                      "policyNames": {
                                        "type": "array",
                                        "description": "The names of the policies registered under the given group",
                                        "items": {
                                          "type": "string"
                                        }
                                      }
                                    }
                                  }
                                },
                                "policies": {
                                  "type": "array",
                                  "description": "The policies registered under the given group",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "policyId": {
                                        "type": "string",
                                        "description": "the ID of the given policy"
                                      },
                                      "policyName": {
                                        "type": "string",
                                        "description": "the name of the given policy"
                                      },
                                      "policyType": {
                                        "type": "string",
                                        "description": "the type of the given policy"
                                      },
                                      "accountIds": {
                                        "type": "array",
                                        "description": "the IDs of the accounts registered under the given policy",
                                        "items": {
                                          "type": "string"
                                        }
                                      }
                                    }
                                  }
                                },
                                "tokens": {
                                  "type": "array",
                                  "description": "metadata of the tokens registered to the user",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "description": "The name of the given token, given by the creating user"
                                      },
                                      "createdAt": {
                                        "type": "string",
                                        "description": "Datetime of token creation"
                                      },
                                      "tokenId": {
                                        "type": "integer",
                                        "description": "Serial identifier of given token"
                                      },
                                      "tokenLastDigits": {
                                        "type": "string",
                                        "description": "Last digits of given token value, to assist with identification"
                                      }
                                    }
                                  }
                                }
                              },
                              "example": {
                                "userId": "u-a1b2c3d4",
                                "username": "John Doe",
                                "type": "personal",
                                "email": "john.doe@company.com",
                                "mfa": "false",
                                "groups": [
                                  {
                                    "id": "ugr-12345678",
                                    "name": "DevOps",
                                    "policyNames": [
                                      "DevOps-PROD",
                                      "DevOps-DEV",
                                      "IT"
                                    ]
                                  },
                                  {
                                    "id": "ugr-87654321",
                                    "name": "IT",
                                    "policyNames": [
                                      "IT"
                                    ]
                                  }
                                ],
                                "policies": [
                                  {
                                    "policyId": "pol-12345678",
                                    "policyName": "TriggerDeployment",
                                    "policyType": "ACCOUNT",
                                    "accountIds": [
                                      "act-12345678",
                                      "act-87654321"
                                    ]
                                  },
                                  {
                                    "policyId": "pol-87654321",
                                    "policyName": "UpdateScheduling",
                                    "policyType": "ORGANIZATION",
                                    "accountIds": []
                                  }
                                ],
                                "tokens": [
                                  {
                                    "name": "my_sweet_token",
                                    "createdAt": "2020-06-01T12:17:51.000+000",
                                    "tokenId": 11111,
                                    "tokenLastDigits": "2323"
                                  }
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete user",
        "description": "Delete a given user(console or programmatic) from organization.\n",
        "operationId": "DeleteUser",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "example": "u-1234abcd or pu-87654321",
            "description": "Identifier of a user.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/user/u-1234abcd",
                            "method": "DELETE",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/user/{userId}/userGroupMapping": {
      "put": {
        "summary": "User - Update User Group Mapping",
        "description": "Update the mapping of a given user to user groups\n",
        "operationId": "userUpdateUserGroupMapping",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1setup~1user~1%7BuserId%7D/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "userGroupIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "A list of the user groups to register the given user to (should be existing user groups only)"
                      }
                    },
                    "example": {
                      "userGroupIds": [
                        "ugr-12345678",
                        "ugr-87654321"
                      ]
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/user/u-1234abcd/userGroupMapping",
                            "method": "PUT",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/user/{userId}/policyMapping": {
      "put": {
        "summary": "User - Update Policy Mapping",
        "description": "Update the mapping of a given user directly to policies\n",
        "operationId": "userUpdatePolicyMapping",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1setup~1user~1%7BuserId%7D/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "policies": {
                        "type": "array",
                        "description": "Existing policies to assign to this user.",
                        "example": null,
                        "items": {
                          "type": "object",
                          "properties": {
                            "policyId": {
                              "type": "string",
                              "description": "Existing policy ID to assign to this user."
                            },
                            "accountIds": {
                              "type": "array",
                              "description": "The account IDs to assign to this user. Use \"*\" if you want to include all current accounts and any accounts created in the future.",
                              "items": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "policies": [
                        {
                          "policyId": "pol-12345678",
                          "accountIds": [
                            "*"
                          ]
                        },
                        {
                          "policyId": "pol-87654321",
                          "accountIds": [
                            "act-12345678",
                            "act-87654321"
                          ]
                        }
                      ]
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/user/u-1234abcd/policyMapping?accountId=act-567c21",
                            "method": "PUT",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/accountUserMapping": {
      "get": {
        "summary": "Get User",
        "description": "Get user's account mapping\n",
        "operationId": "OrganizationsAndAccountsGetUser",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "userEmail",
            "example": "test@spot.io",
            "description": "Target user email address\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Get User Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/accountUserMapping?userEmail=test@spot.io",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:aws:ec2:group:log",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "accountId": {
                                        "type": "string",
                                        "description": "User's account ID",
                                        "example": "act-1234592"
                                      },
                                      "role": {
                                        "type": "string",
                                        "description": "Role identifies the scope of actions - user is able to perform",
                                        "example": "editor"
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "accountId": {
                                        "type": "string",
                                        "description": "User's account ID",
                                        "example": "act-1234593"
                                      },
                                      "role": {
                                        "type": "string",
                                        "description": "Role identifies the scope of actions - user is able to perform",
                                        "example": "viewer"
                                      }
                                    }
                                  }
                                ]
                              },
                              "example": [
                                {
                                  "accountId": "act-1234592",
                                  "role": "editor"
                                },
                                {
                                  "accountId": "act-1234593",
                                  "role": "viewer"
                                }
                              ]
                            },
                            "count": {
                              "type": "integer",
                              "example": 2,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "summary": "Assign Users to Accounts",
        "description": "Assign users to accounts in bulk. Only accounts under the creator's own organization are allowed. Creator's organization ID is taken from the personal token attached to the API call.\n",
        "operationId": "OrganizationsAndAccountsAssignUsersToAccounts",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "Assign role based users",
                    "properties": {
                      "mappings": {
                        "type": "array",
                        "description": "Mappings objects include user, accountID and role.",
                        "items": {
                          "anyOf": [
                            {
                              "type": "object",
                              "properties": {
                                "userId": {
                                  "type": "string",
                                  "description": "One of userEmail / userId is required. identify user by its user ID",
                                  "example": "u-1234"
                                },
                                "accountId": {
                                  "type": "string",
                                  "description": "Account for which to provide the specified user with the specified role.",
                                  "example": "act-123abc"
                                },
                                "role": {
                                  "type": "string",
                                  "description": "Valid values \"viewer\", \"editor\". Required on permissionStrategy = ROLE_BASED",
                                  "example": "editor"
                                }
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "userId": {
                                  "type": "string",
                                  "description": "One of userEmail / userId is required. identify user by its user ID",
                                  "example": "u-1234"
                                },
                                "accountId": {
                                  "type": "string",
                                  "description": "Account for which to provide the specified user with the specified role.",
                                  "example": "act-123abc"
                                },
                                "permissionStrategy": {
                                  "type": "string",
                                  "description": "Set the user permissions type, by role or by access policy. Valid values \"ROLE_BASED\", \"POLICY_BASED\"",
                                  "example": "ROLE_BASED"
                                },
                                "role": {
                                  "type": "string",
                                  "description": "Valid values \"viewer\", \"editor\". Required on permissionStrategy = ROLE_BASED",
                                  "example": "editor"
                                }
                              }
                            }
                          ]
                        },
                        "example": [
                          {
                            "userId": "u-1234",
                            "accountId": "act-123abc",
                            "role": "editor"
                          },
                          {
                            "userId": "u-1234",
                            "accountId": "act-123abc",
                            "permissionStrategy": "ROLE_BASED",
                            "role": "editor"
                          }
                        ]
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "Assign policy based users",
                    "properties": {
                      "mappings": {
                        "type": "array",
                        "description": "Mappings objects include user, accountID and role.",
                        "items": {
                          "allOf": [
                            {
                              "type": "object",
                              "properties": {
                                "userId": {
                                  "type": "string",
                                  "description": "One of userEmail / userId is required. identify user by its user ID",
                                  "example": "u-1234"
                                },
                                "accountId": {
                                  "type": "string",
                                  "description": "Account for which to provide the specified user with the specified role.",
                                  "example": "act-123abc"
                                },
                                "permissionStrategy": {
                                  "type": "string",
                                  "description": "Set the user permissions type, by role or by access policy. Valid values \"ROLE_BASED\", \"POLICY_BASED\"",
                                  "example": "POLICY_BASED"
                                },
                                "policyIds": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  },
                                  "description": "Set list of access policies IDs. Required on permissionStrategy = POLICY_BASED",
                                  "example": [
                                    "pol-c3e30574",
                                    "pol-c3e30575"
                                  ]
                                }
                              }
                            },
                            {
                              "type": "object",
                              "properties": {
                                "userEmail": {
                                  "type": "string",
                                  "description": "One of `userEmail` / `userId` is required. Email of the user, used as a unique identifier.",
                                  "example": "test@spot.io"
                                },
                                "accountId": {
                                  "type": "string",
                                  "description": "Account for which to provide the specified user with the specified role.",
                                  "example": "act-123abc"
                                },
                                "role": {
                                  "type": "string",
                                  "description": "Valid values `viewer`, `editor`. Required when `permissionStrategy = ROLE_BASED`.",
                                  "example": "viewer"
                                }
                              }
                            }
                          ]
                        },
                        "example": [
                          {
                            "userId": "u-1234",
                            "accountId": "act-123abc",
                            "permissionStrategy": "POLICY_BASED",
                            "policyIds": [
                              "pol-c3e30574",
                              "pol-c3e30575"
                            ]
                          },
                          {
                            "userEmail": "test@spot.io",
                            "accountId": "act-123abc",
                            "role": "viewer"
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Assign Users To Accounts Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/accountUserMapping?accountId=act-4fab9sc6",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/organization/{organizationId}": {
      "delete": {
        "summary": "Delete Organization",
        "description": "Delete a Spot Organization. ID of the organization can be obtained from your Spot console via the following link: https://console.spotinst.com/#/settings/organization/general > Note: This cannot be undone. Take caution.\n",
        "operationId": "OrganizationsAndAccountsDeleteOrganization",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "organizationId",
            "example": 606079812345,
            "description": "ID of the organization you would like to delete\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Delete Organization Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/organization/606079812345",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "DELETE",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/account/{accountId}/user": {
      "put": {
        "summary": "Update User Permissions",
        "description": "Change the users' permissions for an account (only accounts under the creator's own organization are allowed). Creator's organization ID is taken from the personal token attached to the API call.\n",
        "operationId": "OrganizationsAndAccountsUpdateAUserPermission",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "accountId",
            "example": "act-123abc",
            "description": "ID of the account associated with your token\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "Update user permissions for editor role",
                    "properties": {
                      "userId": {
                        "type": "string",
                        "description": "One of userEmail / userId is required. identify user by its user ID",
                        "example": "u-1234"
                      },
                      "permissionStrategy": {
                        "type": "string",
                        "description": "Set the user permissions type, by role or by access policy. Valid values \"ROLE_BASED\", \"POLICY_BASED\"",
                        "example": "POLICY_BASED",
                        "default": "ROLE_BASED"
                      },
                      "role": {
                        "type": "string",
                        "description": "Valid values \"viewer\", \"editor\". Required on permissionStrategy = ROLE_BASED",
                        "example": "editor"
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "Update user permission with access policies",
                    "properties": {
                      "userId": {
                        "type": "string",
                        "description": "One of userEmail / userId is required. identify user by its user ID",
                        "example": "u-1234"
                      },
                      "permissionStrategy": {
                        "type": "string",
                        "description": "Set the user permissions type, by role or by access policy. Valid values \"ROLE_BASED\", \"POLICY_BASED\"",
                        "example": "POLICY_BASED",
                        "default": "ROLE_BASED"
                      },
                      "policyIds": {
                        "type": "string",
                        "description": "Policy IDs",
                        "example": [
                          "pol-c3e30574",
                          "pol-c3e30575"
                        ]
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "Update user permission for viewer role",
                    "properties": {
                      "userId": {
                        "type": "string",
                        "description": "One of userEmail / userId is required. identify user by its user ID",
                        "example": "u-1234"
                      },
                      "role": {
                        "type": "string",
                        "description": "Valid values \"viewer\", \"editor\". Required on permissionStrategy = ROLE_BASED",
                        "example": "viewer"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update User Permissions Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/account/act-4fb595c6/user/",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "PUT",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Detach User",
        "description": "Detach a user from an account (only accounts under the creator's own organization are allowed). Creator's organization ID is taken from the personal token attached to the API call.\n",
        "operationId": "OrganizationsAndAccountsDetachUser",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "accountId",
            "example": "act-123456789",
            "description": "The ID of the account you want to update.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "userEmail"
                    ],
                    "properties": {
                      "userEmail": {
                        "type": "string",
                        "description": "Email of the user that is going to be deleted",
                        "example": "test@gmail.com"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Detach User Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/account/act-12345678/user/",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "DELETE",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "summary": "Set Existing User Permissions",
        "description": "Add a user to the account and set its permissions on the account. Creator's organization ID is taken from the personal token attached to the API call.\n",
        "operationId": "OrganizationsAndAccountsSetExistingUserPermissions",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "accountId",
            "example": "act-123456789",
            "description": "The ID of the account you want to update.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "Set user permissions for viewer role",
                    "properties": {
                      "userEmail": {
                        "type": "string",
                        "description": "One of userEmail / userId is required. identify user by its user ID",
                        "example": "test@spot.io"
                      },
                      "role": {
                        "type": "string",
                        "description": "Valid values - \"viewer\", \"editor\". Required on permissionStrategy = ROLE_BASED",
                        "example": "viewer"
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "Set user permissions for editor role",
                    "properties": {
                      "userEmail": {
                        "type": "string",
                        "description": "One of userEmail / userId is required. identify user by its user ID",
                        "example": "test@spot.io"
                      },
                      "role": {
                        "type": "string",
                        "description": "Valid values - \"viewer\", \"editor\". Required on permissionStrategy = ROLE_BASED",
                        "example": "editor"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Set Existing User Permissions Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/account/act-4fb765c6/user",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "PUT",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/user/programmatic": {
      "post": {
        "summary": "Create Programmatic User",
        "description": "This API creates a new programmatic user (not a human user). Use this API to provide privileges to an application that needs to interface with  Spot. Spot returns a token that the programmatic user can use to perform actions with. requires `accounts` or `policies`.",
        "operationId": "OrganizationsAndAccountsCreateProgrammaticUser",
        "tags": [
          "Organizations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "name"
                    ],
                    "properties": {
                      "description": {
                        "type": "string",
                        "description": "Brief description of the user.",
                        "example": "test programmatic"
                      },
                      "name": {
                        "type": "string",
                        "description": "Name of the programmatic user. Note: names cannot include these characters: + = @\n",
                        "example": "testProgrammaticApi"
                      },
                      "accounts": {
                        "type": "array",
                        "description": "All the accounts the programmatic user will have access to. If used - Cannot be empty.",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "Account ID the programmatic user will have access to.\n",
                              "example": "act-123"
                            },
                            "role": {
                              "type": "string",
                              "description": "Role to be associated with the programmatic user for this account.\n",
                              "enum": [
                                "viewer",
                                "editor"
                              ],
                              "example": "viewer"
                            }
                          }
                        }
                      },
                      "policies": {
                        "type": "array",
                        "description": "All the policies the programmatic user will have access to. If used - Cannot be empty.",
                        "example": [
                          {
                            "policyId": "pol-12345678",
                            "accountIds": [
                              "*"
                            ]
                          },
                          {
                            "policyId": "pol-87654321",
                            "accountIds": [
                              "act-12345678",
                              "act-87654321"
                            ]
                          }
                        ],
                        "items": {
                          "type": "object",
                          "properties": {
                            "policyId": {
                              "type": "string",
                              "description": "Policy ID the programmatic user will have access to.\n"
                            },
                            "accountIds": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              },
                              "description": "The accounts to enforce the policy for the user. Use \"*\" if you want to include all current accounts and any accounts created in the future."
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create Programmatic User Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:setup:programmaticUser",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "token": {
                                    "type": "string",
                                    "description": "Token",
                                    "example": "f872e7b157866a36229d915aa21cf430f661234568703fd"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Name",
                                    "example": "TestApi1"
                                  },
                                  "id": {
                                    "type": "string",
                                    "description": "ID",
                                    "example": "pu-6a6976ab"
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/organization": {
      "post": {
        "summary": "Create Organization",
        "description": "Create a Spot Organization.",
        "operationId": "OrganizationsAndAccountsCreateOrganization",
        "tags": [
          "Organizations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "organization": {
                        "type": "object",
                        "description": "Organization",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Provide a name for your organization. The organization name must contain at least one character that is a-z or A-Z",
                            "example": "organizationName"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create Organization Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/organization",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:setup:organization",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:setup:organization",
                                "properties": {
                                  "organizationId": {
                                    "type": "integer",
                                    "description": "Organization ID",
                                    "example": 12345678
                                  },
                                  "organizationName": {
                                    "type": "string",
                                    "description": "Provide a name for your organization. The organization name must contain at least one character that is a-z or A-Z",
                                    "example": "organizationName"
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/access/policyAction": {
      "get": {
        "summary": "Get Access Policy Actions",
        "description": "Get actions for access policies.",
        "operationId": "OrganizationsAndAccountsGetAccessPolicyAction",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "name",
            "example": "ocean:updateCluster",
            "description": "The policy action Name that you would like to get the information for\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "service",
            "example": "ocean",
            "description": "The policy action service that you would like to get the information for\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "resourcePattern",
            "example": "ocean:o-*",
            "description": "The policy action resource pattern that you would like to get the information for\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "scope",
            "example": "account",
            "description": "The policy action scope that you would like to get the information for\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "category",
            "example": "update",
            "description": "The policy action category that you would like to get the information for\n",
            "schema": {
              "type": "string"
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/access/policyAction?service=ocean&resourcePattern=ocean:ols-*&category=update",
                            "method": "GET",
                            "timestamp": "2022-04-14T05:05:26.044Z"
                          }
                        },
                        "response": {
                          "properties": {
                            "kind": {
                              "example": "spotinst:setup:policyAction"
                            },
                            "count": {
                              "example": 3
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "description": "action name"
                                  },
                                  "service": {
                                    "type": "string",
                                    "description": "service name"
                                  },
                                  "resourcePattern": {
                                    "type": "string",
                                    "description": "resource pattern to use with policy action"
                                  },
                                  "scope": {
                                    "type": "string",
                                    "description": "permissions level for policy action"
                                  },
                                  "category": {
                                    "type": "string",
                                    "description": "kind of policy action"
                                  }
                                }
                              },
                              "example": [
                                {
                                  "name": "ocean:updateLaunchSpec",
                                  "service": "ocean",
                                  "resourcePattern": "ocean:ols-*",
                                  "scope": "ACCOUNT",
                                  "category": "UPDATE"
                                },
                                {
                                  "name": "ocean:launchNodesInLaunchSpec",
                                  "service": "ocean",
                                  "resourcePattern": "ocean:ols-*",
                                  "scope": "ACCOUNT",
                                  "category": "UPDATE"
                                },
                                {
                                  "name": "ocean:updateClusterLaunchSpec",
                                  "service": "ocean",
                                  "resourcePattern": "ocean:ols-*",
                                  "scope": "ACCOUNT",
                                  "category": "UPDATE"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/account": {
      "post": {
        "summary": "Create Account",
        "description": "Create a Spot account.",
        "operationId": "OrganizationsAndAccountsCreateAccount",
        "tags": [
          "Accounts"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "account": {
                        "type": "object",
                        "description": "Account",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Provide a name for your account. The account name must contain at least one character that is a-z or A-Z",
                            "example": "AccountName"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create Account Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/account",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:setup:account",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:setup:account",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "Account ID",
                                    "example": "act-123456"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "Account Name",
                                    "example": "AccountName"
                                  },
                                  "organizationId": {
                                    "type": "string",
                                    "description": "Organization ID",
                                    "example": 606012341234
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Accounts",
        "description": "Get a list of Spot accounts in your organization.  When used without any parameters, the provided token must have Organization Admin permissions and the output will contain all the Organization's accounts. Note In case you want to list all the accounts associated with Organization you can use the below request URL without the cloudAccountId parameter, https://api.spotinst.io/setup/account",
        "operationId": "OrganizationsAndAccountsGetAccounts",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "cloudAccountId",
            "schema": {
              "type": "string",
              "example": 634245686616,
              "description": "Will list only the Spot accounts connected to the specified account ID.\n"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Get Accounts Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/account?cloudAccountId=123456789",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:setup:account",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "anyOf": [
                                  {
                                    "type": "object",
                                    "properties": {
                                      "accountId": {
                                        "type": "string",
                                        "description": "Account ID",
                                        "example": "act-57765123"
                                      },
                                      "organizationId": {
                                        "type": "integer",
                                        "description": "Organization ID",
                                        "example": 606079861123
                                      },
                                      "name": {
                                        "type": "string",
                                        "description": "Name",
                                        "example": "test"
                                      },
                                      "providerExternalId": {
                                        "type": "string",
                                        "description": "Provider external ID",
                                        "example": 123456789
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "accountId": {
                                        "type": "string",
                                        "description": "Account ID",
                                        "example": "act-57765123"
                                      },
                                      "organizationId": {
                                        "type": "integer",
                                        "description": "Organization ID",
                                        "example": 606079861123
                                      },
                                      "name": {
                                        "type": "string",
                                        "description": "Name",
                                        "example": "prod"
                                      },
                                      "providerExternalId": {
                                        "type": "string",
                                        "description": "Provider external ID",
                                        "example": 123456789
                                      }
                                    }
                                  }
                                ]
                              },
                              "example": [
                                {
                                  "accountId": "act-57765123",
                                  "organizationId": 606079861123,
                                  "name": "test",
                                  "providerExternalId": 123456789
                                },
                                {
                                  "accountId": "act-57765123",
                                  "organizationId": 606079861123,
                                  "name": "prod",
                                  "providerExternalId": 123456789
                                }
                              ]
                            },
                            "count": {
                              "type": "integer",
                              "example": 2,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/access/policy": {
      "post": {
        "summary": "Create Access Policy",
        "description": "Create an access policy to define the user's permissions more granularly than the role-based permissions.",
        "operationId": "OrganizationsAndAccountsCreateAccessPolicy",
        "tags": [
          "Organizations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "policy": {
                        "type": "object",
                        "description": "Set access policy settings. Example - Acme, Inc.",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Name of the Policy. Note: names cannot include these characters: + = @\n",
                            "example": "my policy"
                          },
                          "description": {
                            "type": "string",
                            "description": "Short description of policy",
                            "example": "description of my policy"
                          },
                          "policyContent": {
                            "type": "object",
                            "description": "Set permissions objects list",
                            "properties": {
                              "statements": {
                                "type": "array",
                                "description": "List of permissions statements",
                                "items": {
                                  "anyOf": [
                                    {
                                      "type": "object",
                                      "properties": {
                                        "effect": {
                                          "type": "string",
                                          "description": "Valid values \"ALLOW\", \"DENY\"",
                                          "example": "ALLOW"
                                        },
                                        "actions": {
                                          "type": "array",
                                          "description": "Set a list of required actions for this permissions statement. full list of actions can be found - https://docs.flexera.com/spot/account-user-management/user-management/access-policies-actions/",
                                          "items": {
                                            "type": "string",
                                            "example": [
                                              "ocean:importCluster"
                                            ]
                                          }
                                        },
                                        "resources": {
                                          "type": "array",
                                          "description": "Set a list of resources IDs. In order to include all resources in this statement - use \"*\"",
                                          "items": {
                                            "type": "string",
                                            "example": [
                                              "*"
                                            ]
                                          }
                                        }
                                      }
                                    },
                                    {
                                      "type": "object",
                                      "properties": {
                                        "effect": {
                                          "type": "string",
                                          "description": "Valid values \"ALLOW\", \"DENY\"",
                                          "example": "ALLOW"
                                        },
                                        "actions": {
                                          "type": "array",
                                          "description": "Set a list of required actions for this permissions statement. full list of actions can be found - https://docs.flexera.com/spot/account-user-management/user-management/access-policies-actions/",
                                          "items": {
                                            "type": "string",
                                            "example": [
                                              "emr:scale"
                                            ]
                                          }
                                        },
                                        "resources": {
                                          "type": "array",
                                          "description": "Set a list of resources IDs. In order to include all resources in this statement - use \"*\"",
                                          "items": {
                                            "type": "string",
                                            "example": [
                                              "*"
                                            ]
                                          }
                                        }
                                      }
                                    }
                                  ]
                                },
                                "example": [
                                  {
                                    "effect": "ALLOW",
                                    "actions": [
                                      "ocean:importCluster"
                                    ],
                                    "resources": [
                                      "*"
                                    ]
                                  },
                                  {
                                    "effect": "ALLOW",
                                    "actions": [
                                      "emr:scale"
                                    ],
                                    "resources": [
                                      "*"
                                    ]
                                  }
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create Access Policy Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/access/policy?accountId=act-6sd665cs\"",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:setup:access:policy",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:setup:access:policy",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "description": "Set access policy name",
                                    "example": "my policy"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "Set access policy description",
                                    "example": "description of my policy"
                                  },
                                  "policyContent": {
                                    "type": "array",
                                    "items": {
                                      "type": "object"
                                    },
                                    "description": "Set permissions objects list",
                                    "properties": {
                                      "statements": {
                                        "type": "array",
                                        "items": {
                                          "anyOf": [
                                            {
                                              "$ref": "#/paths/~1setup~1access~1policy/post/requestBody/content/application~1json/schema/allOf/0/properties/policy/properties/policyContent/properties/statements/items/anyOf/0"
                                            },
                                            {
                                              "$ref": "#/paths/~1setup~1access~1policy/post/requestBody/content/application~1json/schema/allOf/0/properties/policy/properties/policyContent/properties/statements/items/anyOf/1"
                                            }
                                          ]
                                        }
                                      }
                                    }
                                  },
                                  "id": {
                                    "type": "string",
                                    "description": "ID",
                                    "example": "pol-de9716be"
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Access Policies",
        "description": "Get access policy settings.",
        "operationId": "OrganizationsAndAccountsGetAccountAccessPolicies",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Get Account Access Policies Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/access/policy?accountId=act-4fd325c3",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:setup:access:policy",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:setup:access:policy",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "description": "Set access policy name",
                                    "example": "my policy"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "Set access policy description",
                                    "example": "description of my policy"
                                  },
                                  "policyContent": {
                                    "type": "object",
                                    "description": "Set permissions objects list",
                                    "properties": {
                                      "statements": {
                                        "type": "array",
                                        "items": {
                                          "anyOf": [
                                            {
                                              "type": "object",
                                              "properties": {
                                                "effect": {
                                                  "type": "string",
                                                  "description": "Valid values \"ALLOW\", \"DENY\"",
                                                  "example": "ALLOW"
                                                },
                                                "actions": {
                                                  "type": "array",
                                                  "description": "Set a list of required actions for this permissions statement. full list of actions can be found - https://docs.flexera.com/spot/account-user-management/user-management/access-policies-actions/",
                                                  "items": {
                                                    "type": "string",
                                                    "example": [
                                                      "ocean:importCluster"
                                                    ]
                                                  }
                                                },
                                                "resources": {
                                                  "type": "array",
                                                  "description": "Set a list of resources IDs. In order to include all resources in this statement - use \"*\"",
                                                  "items": {
                                                    "type": "string",
                                                    "example": [
                                                      "*"
                                                    ]
                                                  }
                                                }
                                              }
                                            },
                                            {
                                              "type": "object",
                                              "properties": {
                                                "effect": {
                                                  "type": "string",
                                                  "description": "Valid values \"ALLOW\", \"DENY\"",
                                                  "example": "ALLOW"
                                                },
                                                "actions": {
                                                  "type": "array",
                                                  "description": "Set a list of required actions for this permissions statement. full list of actions can be found - https://docs.flexera.com/spot/account-user-management/user-management/access-policies-actions/",
                                                  "items": {
                                                    "type": "string",
                                                    "example": [
                                                      "emr:scale"
                                                    ]
                                                  }
                                                },
                                                "resources": {
                                                  "type": "array",
                                                  "description": "Set a list of resources IDs. In order to include all resources in this statement - use \"*\"",
                                                  "items": {
                                                    "type": "string",
                                                    "example": [
                                                      "*"
                                                    ]
                                                  }
                                                }
                                              }
                                            }
                                          ]
                                        }
                                      }
                                    }
                                  },
                                  "id": {
                                    "type": "string",
                                    "description": "ID",
                                    "example": "pol-de9716be"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "description": "Created At Date",
                                    "example": "2020-01-21T12:37:14.000+0000"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "description": "Updated At Date",
                                    "example": "2020-01-21T12:37:14.000+0000"
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/access/policy/{policyId}": {
      "put": {
        "summary": "Update Access Policy",
        "description": "Updates an access policy settings.",
        "operationId": "OrganizationsAndAccountsUpdateAccessPolicy",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "policyId",
            "example": "pol-2344nn",
            "description": "The access policy ID to operate on\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "policy": {
                        "type": "object",
                        "description": "Set access policy settings",
                        "properties": {
                          "name": {
                            "type": "string",
                            "description": "Set access policy name",
                            "example": "A wonderful policy"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update Access Policy Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/access/policy/pol-2344nn?accountId=act-4fbdvfc6",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "PUT",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Access Policy",
        "description": "Deletes an access policy settings.",
        "operationId": "OrganizationsAndAccountsDeleteAccessPolicy",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1setup~1access~1policy~1%7BpolicyId%7D/put/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Delete Access Policy Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/access/policy/pol-2344nn?accountId=act-123456789",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "DELETE",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/access/userGroup": {
      "get": {
        "summary": "List All User Groups",
        "description": "List all user-groups of your Spot organization\n",
        "operationId": "userGroupListAll",
        "tags": [
          "Organizations"
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/access/userGroup?accountId=act-567c21",
                            "method": "GET",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        },
                        "response": {
                          "properties": {
                            "kind": {
                              "example": "spotinst:setup:access:userGroup"
                            },
                            "count": {
                              "example": 2
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "user group id"
                                  },
                                  "name": {
                                    "type": "string",
                                    "description": "user group name"
                                  },
                                  "description": {
                                    "type": "string",
                                    "description": "user group description"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "description": "user group creation timestamp"
                                  },
                                  "usersCount": {
                                    "type": "integer",
                                    "description": "the amount of users registered under the given group"
                                  },
                                  "policyNames": {
                                    "type": "array",
                                    "description": "The names of the policies registered under the given group",
                                    "items": {
                                      "type": "string"
                                    }
                                  }
                                }
                              },
                              "example": [
                                {
                                  "id": "ugr-a1b2c3d4",
                                  "name": "Developers",
                                  "description": "managing permissions to my group of developers",
                                  "createdAt": "2020-11-04T11:29:10.000+0000",
                                  "usersCount": 10,
                                  "policyNames": [
                                    "TriggerDeployment"
                                  ]
                                },
                                {
                                  "id": "ugr-4d3c2b1a",
                                  "name": "DevOps",
                                  "description": "managing permissions to my group of DevOps",
                                  "createdAt": "2020-09-01T11:28:00.000+0000",
                                  "usersCount": 5,
                                  "policyNames": [
                                    "TriggerDeployment",
                                    "UpdateScaling",
                                    "UpdateScheduling"
                                  ]
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "summary": "Create a new User Group",
        "description": "Create a new user-group of your Spot organization\n",
        "operationId": "userGroupCreate",
        "tags": [
          "Organizations"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "id": {
                        "readOnly": true,
                        "type": "string",
                        "description": "user group id",
                        "example": "ugr-a1b2c3d4"
                      },
                      "name": {
                        "type": "string",
                        "description": "Name of the user group. Note: names cannot include these characters: + = @\n",
                        "example": "Developers"
                      },
                      "description": {
                        "type": "string",
                        "description": "user group description",
                        "example": "managing permissions to my group of developers"
                      },
                      "createdAt": {
                        "readOnly": true,
                        "type": "string",
                        "description": "user group creation timestamp",
                        "example": "2020-11-04T11:29:10.000+0000"
                      },
                      "userIds": {
                        "type": "array",
                        "description": "The users to register under the created group (should be existing users only)",
                        "example": [
                          "u-12345678",
                          "pu-12345678"
                        ],
                        "items": {
                          "type": "string"
                        }
                      },
                      "policies": {
                        "type": "array",
                        "description": "Existing policies to assign to this group.",
                        "example": [
                          {
                            "policyId": "pol-12345678",
                            "accountIds": [
                              "*"
                            ]
                          },
                          {
                            "policyId": "pol-87654321",
                            "accountIds": [
                              "act-12345678",
                              "act-87654321"
                            ]
                          }
                        ],
                        "items": {
                          "type": "object",
                          "properties": {
                            "policyId": {
                              "type": "string",
                              "description": "The existing policy to assign to this group."
                            },
                            "accounts": {
                              "type": "array",
                              "description": "The accounts to assign to this group. Use \"*\" if you want to include all current accounts and any accounts created in the future.",
                              "items": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/access/userGroup?accountId=act-567c21",
                            "method": "POST",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        },
                        "response": {
                          "properties": {
                            "kind": {
                              "example": "spotinst:setup:access:userGroup"
                            },
                            "count": {
                              "example": 1
                            },
                            "items": {
                              "$ref": "#/paths/~1setup~1access~1userGroup/post/requestBody/content/application~1json/schema/allOf/0"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/access/userGroup/{userGroupId}": {
      "get": {
        "summary": "Get User Group Details",
        "description": "Get the details of a user Group\n",
        "operationId": "userGroupGetDetails",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "userGroupId",
            "example": "ugr-1234abcd",
            "description": "Identifier of a user Group.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/access/userGroup/urg-1234abcd?accountId=act-567c21",
                            "method": "GET",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        },
                        "response": {
                          "properties": {
                            "kind": {
                              "example": "spotinst:setup:access:userGroup"
                            },
                            "count": {
                              "example": 1
                            },
                            "items": {
                              "type": "object",
                              "properties": {
                                "id": {
                                  "type": "string",
                                  "description": "user group id"
                                },
                                "name": {
                                  "type": "string",
                                  "description": "user group name"
                                },
                                "description": {
                                  "type": "string",
                                  "description": "user group description"
                                },
                                "createdAt": {
                                  "type": "string",
                                  "description": "user group creation timestamp"
                                },
                                "users": {
                                  "type": "array",
                                  "description": "the users registered under the given group",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "userId": {
                                        "type": "string",
                                        "description": "the ID of the given user"
                                      },
                                      "userName": {
                                        "type": "string",
                                        "description": "the name of the given user"
                                      },
                                      "type": {
                                        "type": "string",
                                        "description": "the type of the given user",
                                        "enum": [
                                          "programmatic",
                                          "personal"
                                        ]
                                      }
                                    }
                                  }
                                },
                                "policies": {
                                  "type": "array",
                                  "description": "The policies registered under the given group",
                                  "items": {
                                    "type": "object",
                                    "properties": {
                                      "policyId": {
                                        "type": "string",
                                        "description": "the ID of the given policy"
                                      },
                                      "policyName": {
                                        "type": "string",
                                        "description": "the name of the given policy"
                                      },
                                      "policyType": {
                                        "type": "string",
                                        "description": "the type of the given policy"
                                      },
                                      "accountNames": {
                                        "type": "array",
                                        "description": "the names of the accounts registered under the given policy",
                                        "items": {
                                          "type": "string"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "example": {
                                "id": "ugr-a1b2c3d4",
                                "name": "Developers",
                                "description": "managing permissions to my group of developers",
                                "createdAt": "2020-11-04T11:29:10.000+0000",
                                "users": [
                                  {
                                    "userId": "u-12345678",
                                    "userName": "Clark Kent",
                                    "type": "personal"
                                  },
                                  {
                                    "userId": "pu-87654321",
                                    "userName": "Superman",
                                    "type": "programmatic"
                                  }
                                ],
                                "policies": [
                                  {
                                    "policyId": "pol-12345678",
                                    "policyName": "TriggerDeployment",
                                    "policyType": "ACCOUNT",
                                    "accountIds": [
                                      "act-12345678",
                                      "act-87654321"
                                    ]
                                  },
                                  {
                                    "policyId": "pol-87654321",
                                    "policyName": "UpdateScheduling",
                                    "policyType": "ORGANIZATION"
                                  }
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update User Group Details",
        "description": "Update the details of a user Group\n",
        "operationId": "userGroupUpdateDetails",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1setup~1access~1userGroup~1%7BuserGroupId%7D/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "name": {
                        "type": "string",
                        "description": "user group name",
                        "minLength": 1,
                        "example": "Developers"
                      },
                      "description": {
                        "type": "string",
                        "description": "user group description",
                        "minLength": 1,
                        "example": "managing permissions to my group of developers"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/access/userGroup/urg-1234abcd?accountId=act-567c21",
                            "method": "PUT",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete User Group",
        "description": "Delete a user Group\n",
        "operationId": "userGroupDelete",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1setup~1access~1userGroup~1%7BuserGroupId%7D/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/access/userGroup/urg-1234abcd?accountId=act-567c21",
                            "method": "DELETE",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/access/userGroup/{userGroupId}/userMapping": {
      "put": {
        "summary": "User Group - Update User Mapping",
        "description": "Update the mapping of a given user group to users\n",
        "operationId": "userGroupUpdateUserMapping",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1setup~1access~1userGroup~1%7BuserGroupId%7D/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "userIds": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "The users to register under the given user group (should be existing users only)"
                      }
                    },
                    "example": {
                      "userIds": [
                        "u-12345678",
                        "pu-12345678"
                      ]
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/access/userGroup/urg-1234abcd/userMapping?accountId=act-567c21",
                            "method": "PUT",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/access/userGroup/{userGroupId}/policyMapping": {
      "put": {
        "summary": "User Group - Update Policy Mapping",
        "description": "Update the mapping of a given user group to policies\n",
        "operationId": "userGroupUpdatePolicyMapping",
        "tags": [
          "Organizations"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1setup~1access~1userGroup~1%7BuserGroupId%7D/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "policies": {
                        "type": "array",
                        "description": "Existing policies to assign to this group.",
                        "example": null,
                        "items": {
                          "type": "object",
                          "properties": {
                            "policyId": {
                              "type": "string",
                              "description": "The existing policy to assign to this group."
                            },
                            "accountIds": {
                              "type": "array",
                              "description": "The accounts to assign to this group. Use \"*\" if you want to include all current accounts and any accounts created in the future.",
                              "items": {
                                "type": "string"
                              }
                            }
                          }
                        }
                      }
                    },
                    "example": {
                      "policies": [
                        {
                          "policyId": "pol-12345678",
                          "accountIds": [
                            "*"
                          ]
                        },
                        {
                          "policyId": "pol-87654321",
                          "accountIds": [
                            "act-12345678",
                            "act-87654321"
                          ]
                        }
                      ]
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "example": {
                            "id": "3ab3fdf7-3af3-46db-9e63-b88cfdac058c",
                            "url": "/setup/access/userGroup/urg-1234abcd/policyMapping?accountId=act-567c21",
                            "method": "PUT",
                            "timestamp": "2018-08-20T15:31:12.730Z"
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/credentials/aws": {
      "post": {
        "summary": "Set Credentials for AWS",
        "description": "Link a Spot account to an AWS Cloud account. \\\nPlease create external id using spot api (see /setup/credentials/aws/externalId) \\\nand use it when creating the AWS role and then call this route with your AWS role's arn to link it to your spot account\n",
        "operationId": "OrganizationsAndAccountsSetCloudCredentialsForAWS",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "credentials": {
                        "type": "object",
                        "description": "Credentials details",
                        "required": [
                          "iamRole"
                        ],
                        "properties": {
                          "iamRole": {
                            "type": "string",
                            "description": "Provide the IAM Role ARN connected to another AWS account 922761411349 and with the latest Spot Policy - https://docs.flexera.com/spot/administration/api/spot-policy-in-aws",
                            "example": "arn:aws:iam::1234567890:role/Spot_Iam_Role"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Set Cloud Credentials For AWS Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/credentials/aws?accountId=act-123456",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/setup/credentials/aws/externalId": {
      "post": {
        "summary": "Create AWS account external id",
        "description": "Create aws account external id \\\nYou should use the external id when creating your AWS role for your spot account \\\nand after you create the role you need to call [set-aws-credentials Set Credentials for AWS](https://spec.dev.spot.io/#operation/OrganizationsAndAccountsSetCloudCredentialsForAWS) \\\nto link your AWS account with your spot account\n",
        "operationId": "OrganizationsAndAccountsCreateAWSAccountExternalId",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Create AWS Acccount External Id Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/setup/credentials/aws/externalId?accountId=act-123456",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:setup:aws:externalId",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "spotinst:setup:aws:externalId",
                                "properties": {
                                  "externalId": {
                                    "type": "string",
                                    "description": "Token",
                                    "example": "SpotinstAwsAccountExternalId"
                                  },
                                  "maxValidUntil": {
                                    "type": "string",
                                    "description": "Max Valid Until",
                                    "example": "2021-03-18T16:11:04.402Z"
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/setup/credentials": {
      "post": {
        "summary": "Set Credentials for GCP",
        "description": "Link a Spot account to a GCP Cloud account.",
        "operationId": "OrganizationsAndAccountsSetCloudCredentialsForGCP",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "serviceAccount": {
                        "type": "object",
                        "description": "Set service account for credentials",
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "Valid values - service_account",
                            "example": "service_account"
                          },
                          "project_id": {
                            "type": "string",
                            "description": "Name of project in GCP",
                            "example": "test-labs"
                          },
                          "private_key_id": {
                            "type": "string",
                            "description": "Private key ID of JSON key created during prerequisites stage",
                            "example": "XXXXXXXXXXXXXXXXX"
                          },
                          "private_key": {
                            "type": "string",
                            "description": "Private key of JSON key created during prerequisites stage",
                            "example": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
                          },
                          "client_email": {
                            "type": "string",
                            "description": "Email associated with service account",
                            "example": "test123@spot.io"
                          },
                          "client_id": {
                            "type": "string",
                            "description": "Client ID of service account",
                            "example": "XXXXXXXXXXXXXXXXXXXXX"
                          },
                          "auth_uri": {
                            "type": "string",
                            "description": "Authentication uri, Default - https://accounts.google.com/o/oauth2/auth",
                            "example": "https://accounts.google.com/o/oauth2/auth"
                          },
                          "token_uri": {
                            "type": "string",
                            "description": "Token uri, Default - https://oauth2.googleapis.com/token",
                            "example": "https://oauth2.googleapis.com/token"
                          },
                          "auth_provider_x509_cert_url": {
                            "type": "string",
                            "description": "Default - https://www.googleapis.com/oauth2/v1/certs",
                            "example": "https://www.googleapis.com/oauth2/v1/certs"
                          },
                          "client_x509_cert_url": {
                            "type": "string",
                            "description": "Should be in following format - \"https://www.googleapis.com/robot/v1/metadata/x509/\"",
                            "example": "https://www.googleapis.com/robot/v1/metadata/x509/test123%40test-labs.iam.gserviceaccount.com"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Set Cloud Credentials For GCP Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/gcp/setup/credentials?accountId=act-123456",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/gcp/setup/credentials/validation": {
      "post": {
        "summary": "Validate Credentials for GCP",
        "description": "Validate the credentials for connecting a Spot account to an GCP Cloud account. The validation will test the credentials without actually set it. Please notice to run the set credentials request to perform the set account credentials.",
        "operationId": "OrganizationsAndAccountsValidateCloudCredentialsForGCP",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "serviceAccount": {
                        "type": "object",
                        "description": "Set service account for credentials",
                        "properties": {
                          "type": {
                            "type": "string",
                            "description": "Valid values - service_account",
                            "example": "service_account"
                          },
                          "project_id": {
                            "type": "string",
                            "description": "Name of project in GCP",
                            "example": "test-labs"
                          },
                          "private_key_id": {
                            "type": "string",
                            "description": "Private key ID of JSON key created during prerequisites stage",
                            "example": "XXXXXXXXXXXXXXXXX"
                          },
                          "private_key": {
                            "type": "string",
                            "description": "Private key of JSON key created during prerequisites stage",
                            "example": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
                          },
                          "client_email": {
                            "type": "string",
                            "description": "Email associated with service account",
                            "example": "test123@spot.io"
                          },
                          "client_id": {
                            "type": "string",
                            "description": "Client ID of service account",
                            "example": "XXXXXXXXXXXXXXXXXXXXX"
                          },
                          "auth_uri": {
                            "type": "string",
                            "description": "Authentication uri, Default - https://accounts.google.com/o/oauth2/auth",
                            "example": "https://accounts.google.com/o/oauth2/auth"
                          },
                          "token_uri": {
                            "type": "string",
                            "description": "Token uri, Default - https://oauth2.googleapis.com/token",
                            "example": "https://oauth2.googleapis.com/token"
                          },
                          "auth_provider_x509_cert_url": {
                            "type": "string",
                            "description": "Default - https://www.googleapis.com/oauth2/v1/certs",
                            "example": "https://www.googleapis.com/oauth2/v1/certs"
                          },
                          "client_x509_cert_url": {
                            "type": "string",
                            "description": "Should be in following format - \"https://www.googleapis.com/robot/v1/metadata/x509/\"",
                            "example": "https://www.googleapis.com/robot/v1/metadata/x509/test123%40test-labs.iam.gserviceaccount.com"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Validate Cloud Credentials for GCP Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/gcp/setup/credentials/validate?accountId=act-123456",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/setup/credentials": {
      "post": {
        "summary": "Set Credentials for Azure",
        "description": "Link a Spot account to an Azure Cloud account. \n Enter the expiration date of your Azure client secret. Spot can remind you to update before the credentials expire. \n If your client secret expires, your Azure subscription will disconnect from Spot and prevent Spot from managing your resources.",
        "operationId": "OrganizationsAndAccountsSetCloudCredentialsForAzure",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "clientId",
                      "clientSecret",
                      "tenantId",
                      "subscriptionId",
                      "expirationDate"
                    ],
                    "properties": {
                      "clientId": {
                        "type": "string",
                        "description": "Set the application ID",
                        "example": 111111111
                      },
                      "clientSecret": {
                        "type": "string",
                        "description": "Set the key secret",
                        "example": "32431r2431434132"
                      },
                      "tenantId": {
                        "type": "string",
                        "description": "Set the directory ID",
                        "example": "1321e1e3123er23"
                      },
                      "subscriptionId": {
                        "type": "string",
                        "description": "Set the subscription ID",
                        "example": "234r3141131"
                      },
                      "expirationDate": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Set the key secret expiration date",
                        "example": "2025-12-31T23:59:00.000Z"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Set Cloud Credentials For Azure Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/azure/setup/credentials?accountId=act-123456",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Credentials for Azure",
        "description": "Get the credentials connecting a Spot account to an Azure Cloud account.",
        "operationId": "OrganizationsAndAccountsGetCloudCredentialsForAzure",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Get Azure Credentials Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/azure/setup/credentials?accountId=act-123456",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "spotinst:azure:credentials",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "clientId": {
                                    "type": "string",
                                    "description": "The application ID",
                                    "example": 111111111
                                  },
                                  "tenantId": {
                                    "type": "string",
                                    "description": "The directory ID",
                                    "example": "1321e1e3123er23"
                                  },
                                  "subscriptionId": {
                                    "type": "string",
                                    "description": "The subscription ID",
                                    "example": "234r3141131"
                                  }
                                }
                              },
                              "example": [
                                {
                                  "clientId": 111111111,
                                  "tenantId": "1321e1e3123er23",
                                  "subscriptionId": "234r3141131",
                                  "clientSecret": "abc*************************************",
                                  "expirationDate": "2023-10-31T00:00:00Z"
                                }
                              ]
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/setup/credentials/validation": {
      "post": {
        "summary": "Validate Credentials for Azure",
        "description": "Validate the credentials for connecting a Spot account to an Azure Cloud account. The validation will test the credentials without actually set it. Please notice to run the set credentials request to perform the set Azure account credentials (https://docs.flexera.com/spot/connect-your-cloud-provider/azure-account) .",
        "operationId": "OrganizationsAndAccountsValidateCloudCredentialsForAzure",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "clientId": {
                        "type": "string",
                        "description": "Set the application ID",
                        "example": "111111111"
                      },
                      "clientSecret": {
                        "type": "string",
                        "description": "Set the key secret",
                        "example": "32431r2431434132"
                      },
                      "tenantId": {
                        "type": "string",
                        "description": "Set the directory ID",
                        "example": "1321e1e3123er23"
                      },
                      "subscriptionId": {
                        "type": "string",
                        "description": "Set the subscription ID",
                        "example": "234r3141131"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Validate Cloud Credentials for Azure Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/azure/setup/credentials/validation?accountId=act-123456",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "POST",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/setup/tenant/credentials": {
      "post": {
        "summary": "Set Credentials for Azure Tenant",
        "description": "Link a Spot to an Azure Cloud tenant. \n This is used to set up credentials at the tenant level which are utilized for Azure Savings Plan and Reservation utilization. \n",
        "operationId": "OrganizationsAndAccountsSetCloudCredentialsForAzureTenant",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "clientId",
                      "clientSecret",
                      "tenantId",
                      "expirationDate"
                    ],
                    "properties": {
                      "clientId": {
                        "type": "string",
                        "description": "Set the application ID",
                        "example": 111111111
                      },
                      "clientSecret": {
                        "type": "string",
                        "description": "Set the key secret",
                        "example": "32431r2431434132"
                      },
                      "tenantId": {
                        "type": "string",
                        "description": "Set the directory ID",
                        "example": "1321e1e3123er23"
                      },
                      "expirationDate": {
                        "type": "string",
                        "format": "date-time",
                        "description": "Set the key secret expiration date",
                        "example": "2025-12-31T23:59:00.000Z"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1azure~1setup~1credentials/post/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/azure/setup/tenant/credentials/validation": {
      "post": {
        "summary": "Validate Credentials for Azure Tenant",
        "description": "Validate the credentials linked to an Azure Cloud tenant. \n This is used to validate credentials at the tenant level which are utilized for Azure Savings Plan and Reservation utilization. \n",
        "operationId": "OrganizationsAndAccountsValidateCloudCredentialsForAzureTenant",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/paths/~1azure~1setup~1tenant~1credentials/post/requestBody/content/application~1json/schema/allOf/0"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "$ref": "#/paths/~1azure~1setup~1credentials/post/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster": {
      "summary": "Ocean for GKE",
      "post": {
        "summary": "Create Cluster",
        "description": "## Prerequisites:\n  The Ocean Controller is used to monitor the cluster resources and report back to Ocean.|\n  To install the Ocean Controller, complete and run the following script on a machine with the kubectl command line tool installed and configured:\n\n```\n  #!/usr/bin/env bash\n  curl -fsSL http://spotinst-public.s3.amazonaws.com/integrations/kubernetes/cluster-controller/scripts/init.sh | \\\n  SPOTINST_TOKEN=<ENTER YOUR TOKEN HERE> \\\n  SPOTINST_ACCOUNT=<ENTER YOUR SPOTINST ACCOUNT ID HERE> \\\n  SPOTINST_CLUSTER_IDENTIFIER=<ENTER YOUR CLUSTER IDENTIFIER HERE> \\\n  bash\n```\nYou may need Kubernetes admin privileges for this script to work. To grant yourself admin privileges, run the following command:\n```\n  kubectl create clusterrolebinding <clusterName> --clusterrole=cluster-admin --user=<userEmail>\n```\nFor more information, refer to our [controller installation guides](https://docs.flexera.com/spot/ocean/tutorials/spot-kubernetes-controller/). You can install with Helm, Kubectl or Terraform.\nFor more about Ocean and the Ocean Controller, see the documentation [here](https://docs.flexera.com/spot/ocean/overview-kubernetes).\n",
        "operationId": "OceanGKEClusterCreate",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "cluster"
                    ],
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "description": "The specification of the Ocean cluster.",
                        "required": [
                          "name",
                          "controllerClusterId",
                          "compute"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "readOnly": true,
                            "example": "o-abcd1234",
                            "description": "Ocean cluster identifier.\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "test",
                            "description": "Add a name for the Ocean cluster.\n"
                          },
                          "controllerClusterId": {
                            "type": "string",
                            "example": "test-123124",
                            "description": "Enter the Ocean cluster identifier.\n"
                          },
                          "gke": {
                            "type": "object",
                            "required": [
                              "clusterName",
                              "masterLocation"
                            ],
                            "description": "Use existing GKE cluster.\n",
                            "properties": {
                              "clusterName": {
                                "type": "string",
                                "description": "Required for the cluster.gke object.\n",
                                "example": "test-cluster"
                              },
                              "masterLocation": {
                                "type": "string",
                                "description": "Required for the cluster.gke object.\n",
                                "example": "us-central1-a"
                              }
                            }
                          },
                          "autoScaler": {
                            "type": "object",
                            "title": "auto-scaler",
                            "description": "The Ocean Kubernetes Autoscaler object.",
                            "properties": {
                              "isEnabled": {
                                "type": "boolean",
                                "description": "Enable the Ocean Kubernetes Autoscaler.",
                                "default": true,
                                "example": true
                              },
                              "cooldown": {
                                "type": "integer",
                                "description": "Cooldown period between scaling actions.",
                                "default": null,
                                "minimum": 180,
                                "example": 180
                              },
                              "resourceLimits": {
                                "type": "object",
                                "description": "Optionally set upper and lower bounds on the resource usage of the cluster.",
                                "properties": {
                                  "maxMemoryGib": {
                                    "type": "integer",
                                    "description": "The maximum memory in GiB units that can be allocated to the cluster.",
                                    "example": 1500
                                  },
                                  "maxVcpu": {
                                    "type": "integer",
                                    "description": "The maximum CPU in vCPU units that can be allocated to the cluster.",
                                    "example": 750
                                  }
                                }
                              },
                              "down": {
                                "type": "object",
                                "description": "Autoscaling scale down operations.",
                                "properties": {
                                  "evaluationPeriods": {
                                    "type": "integer",
                                    "minimum": 3,
                                    "description": "Number of minutes a node should be eligible for scale down before it is scaled down.",
                                    "example": 3
                                  },
                                  "maxScaleDownPercentage": {
                                    "type": "integer",
                                    "minimum": 1,
                                    "maximum": 100,
                                    "description": "The maximum percentage allowed to scale down in a single scaling action.",
                                    "example": 30
                                  },
                                  "aggressiveScaleDown": {
                                    "type": "object",
                                    "description": "Enable and configure the Accelerated Scale Down feature to allow the Ocean autoscaler to immediately scale down eligible nodes without any waiting period.",
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "description": "When set to 'true', Accelerated Scale Down is enabled.",
                                        "default": false
                                      }
                                    }
                                  }
                                }
                              },
                              "headRoom": {
                                "type": "object",
                                "description": "Spare resource capacity management enabling fast assignment of pods without waiting for new resources to launch.\n",
                                "properties": {
                                  "cpuPerUnit": {
                                    "type": "integer",
                                    "description": "Optionally configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores where 1000 millicores = 1 vCPU.\n",
                                    "example": 0
                                  },
                                  "memoryPerUnit": {
                                    "type": "integer",
                                    "description": "Optionally configure the amount of memory (MiB) to allocate the headroom.",
                                    "example": 0
                                  },
                                  "gpuPerUnit": {
                                    "type": "integer",
                                    "description": "How much GPU to allocate to a headroom unit.",
                                    "example": 0
                                  },
                                  "numOfUnit": {
                                    "type": "integer",
                                    "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                    "example": 0
                                  }
                                }
                              },
                              "isAutoConfig": {
                                "type": "boolean",
                                "description": "Use automatic headroom. When set to true, the values under cluster.autoScaler.headroom are not effective, as Ocean configures and optimizes headroom automatically.\n",
                                "default": true,
                                "example": false
                              },
                              "autoHeadroomPercentage": {
                                "type": "integer",
                                "description": "Optionally set the auto headroom percentage. Set a number between 0-200 to control the headroom percent of the cluster. Relevant when isAutoConfig=true.\n",
                                "example": null
                              },
                              "enableAutomaticAndManualHeadroom": {
                                "type": "boolean",
                                "description": "When set to true, both automatic and per-VNG manual headroom to be saved concurrently and independently in the cluster. prerequisite: isAutoConfig must be true\n",
                                "example": true
                              }
                            }
                          },
                          "autoUpdate": {
                            "type": "object",
                            "title": "auto-update",
                            "description": "The Ocean Kubernetes AutoUpdate object. If set to 'true', Ocean will ensure that your clusters have an up-to-date configuration according to the respective GKE cluster.",
                            "properties": {
                              "isEnabled": {
                                "type": "boolean",
                                "description": "Enable the Ocean Kubernetes AutoUpdate.",
                                "default": true,
                                "example": true
                              }
                            }
                          },
                          "capacity": {
                            "type": "object",
                            "title": "Capacity Units",
                            "description": "Capacity specifications for the Ocean cluster.",
                            "properties": {
                              "minimum": {
                                "type": "integer",
                                "example": 0,
                                "description": "The bottom limit of instances that the cluster can scale down to.\n"
                              },
                              "maximum": {
                                "type": "integer",
                                "default": 1000,
                                "example": 3,
                                "description": "The upper limit of instances that the cluster can scale up to.\n"
                              },
                              "target": {
                                "type": "integer",
                                "example": 3,
                                "description": "Number of instances to launch and maintain in the cluster.\n"
                              }
                            }
                          },
                          "strategy": {
                            "type": "object",
                            "title": "Ocean Strategy",
                            "properties": {
                              "drainingTimeout": {
                                "type": "integer",
                                "description": "The draining timeout (in seconds) before terminating the instance.\nIf no draining timeout is defined, the default draining timeout will be used.\n",
                                "example": 60
                              },
                              "provisioningModel": {
                                "type": "string",
                                "description": "Define the provisioning model of the launched instances\n",
                                "enum": [
                                  "SPOT",
                                  "PREEMPTIBLE"
                                ]
                              },
                              "scalingOrientation": {
                                "type": "string",
                                "default": "BALANCED",
                                "description": "Set this value to control the approach that Ocean takes when launching nodes.\n",
                                "enum": [
                                  "COST",
                                  "AVAILABILITY",
                                  "BALANCED"
                                ]
                              },
                              "preemptiblePercentage": {
                                "type": "integer",
                                "minimum": 0,
                                "maximum": 100,
                                "default": 100,
                                "description": "The desired percentage of Spot/Preemptible instances out of all running instances.\\\nOnly available when the field is **not** set in any VNG directly (launchSpec.strategy.preemptiblePercentage).\n",
                                "example": 100
                              },
                              "shouldUtilizeCommitments": {
                                "type": "boolean",
                                "example": true,
                                "description": "Enable committed use discounts utilization.\n"
                              },
                              "revertToPreferred": {
                                "type": "object",
                                "description": "Allow the replacement of instances to Preferred ones if available.\n",
                                "properties": {
                                  "shouldPerform": {
                                    "type": "boolean",
                                    "default": true,
                                    "description": "If enabled, replacements will be performed for all of your cluster, unless configured on VNG level. TRUE is the default.\n"
                                  },
                                  "maxBatchPercentage": {
                                    "type": "integer",
                                    "minimum": 0,
                                    "maximum": 100,
                                    "default": 10,
                                    "description": "Decide on the % of instances that will be replaced simultaneously.\n"
                                  }
                                }
                              }
                            }
                          },
                          "scheduling": {
                            "type": "object",
                            "title": "Ocean GKE Scheduling",
                            "description": "Schedule an action such as a planned shutdown or a cluster roll.",
                            "properties": {
                              "shutdownHours": {
                                "type": "object",
                                "description": "Define time(s) for a scheduled shutdown.\n",
                                "required": [
                                  "timeWindows"
                                ],
                                "properties": {
                                  "isEnabled": {
                                    "type": "boolean",
                                    "description": "Flag to enable or disable the shutdown hours mechanism. When false, the mechanism is deactivated and the cluster remains in its current state.\n",
                                    "example": true
                                  },
                                  "timeWindows": {
                                    "type": "array",
                                    "description": "Set time windows for shutdown hours. Specify a list of timeWindows that includes at least one time window. Each string is in the format of - ddd:hh:mm-ddd:hh:mm ddd = day of week = Sun | Mon | Tue | Wed | Thu | Fri | Sat hh = hour 24 = 0 -23 mm = minute = 0 - 59. Time windows should not overlap. Required when cluster.scheduling.isEnabled = True.\n",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "Fri:15:30-Wed:14:30",
                                        "Wed:15:30-Thu:18:30"
                                      ]
                                    }
                                  }
                                }
                              },
                              "tasks": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "title": "Task Definition",
                                  "required": [
                                    "isEnabled",
                                    "cronExpression",
                                    "taskType"
                                  ],
                                  "properties": {
                                    "isEnabled": {
                                      "type": "boolean",
                                      "example": true,
                                      "description": "Describes whether the task is enabled. When true, the task runs. When false, it does not run. Required for the cluster.scheduling.tasks object.\n"
                                    },
                                    "cronExpression": {
                                      "type": "string",
                                      "example": "0 1 * * *",
                                      "description": "A valid cron expression. For example : \" * * * * * \". The cron is running in UTC time zone and is in Unix cron format [Cron Expression Validator Script](http://www.unix.com/man-page/linux/5/crontab/). Frequency and cronExpression cannot be used at a time.\n"
                                    },
                                    "taskType": {
                                      "type": "string",
                                      "enum": [
                                        "clusterRoll"
                                      ],
                                      "example": "clusterRoll",
                                      "description": "Valid values: \"clusterRoll\". Required for the cluster.scheduling.tasks object.\n"
                                    },
                                    "parameters": {
                                      "type": "object",
                                      "properties": {
                                        "clusterRoll": {
                                          "type": "object",
                                          "properties": {
                                            "batchSizePercentage": {
                                              "type": "integer",
                                              "minimum": 0,
                                              "maximum": 100,
                                              "example": 20,
                                              "description": "Value as a percent to set the size of a batch in a roll. Valid values are 0-100.\n"
                                            },
                                            "comment": {
                                              "type": "string",
                                              "example": "This is why I deployed my cluster.",
                                              "description": "Add a comment description for the roll. The comment is limited to 256 chars\n"
                                            },
                                            "batchMinHealthyPercentage": {
                                              "type": "integer",
                                              "minimum": 1,
                                              "maximum": 100,
                                              "default": 50,
                                              "example": 100,
                                              "description": "Indicates the threshold of minimum healthy instances in single batch. If the amount of healthy instances in single batch is under the threshold, the cluster roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n"
                                            },
                                            "respectPdb": {
                                              "type": "boolean",
                                              "description": "During the roll, if the parameter is set to true we honor PDB during the instance replacement.\n",
                                              "example": true,
                                              "default": false
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "security": {
                            "type": "object",
                            "title": "Security",
                            "properties": {
                              "containerImage": {
                                "type": "object",
                                "properties": {
                                  "approvedImages": {
                                    "type": "array",
                                    "description": "Set list of permitted repositories for container images.",
                                    "items": {
                                      "type": "string",
                                      "example": [
                                        "gce.io/*",
                                        "docker.*"
                                      ]
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "compute": {
                            "type": "object",
                            "title": "Ocean Compute",
                            "required": [
                              "subnetName",
                              "launchSpecification",
                              "networkInterfaces",
                              "availabilityZones"
                            ],
                            "properties": {
                              "networkInterfaces": {
                                "type": "object",
                                "description": "Settings for network interfaces\n",
                                "required": [
                                  "accessConfigs",
                                  "network"
                                ],
                                "properties": {
                                  "network": {
                                    "type": "string",
                                    "example": "default"
                                  },
                                  "projectId": {
                                    "type": "string",
                                    "description": "Use a network resource from a different project. Set the project identifier to use its network resource. This parameter is relevant only if the network resource is in a different project.\n",
                                    "example": "test-project"
                                  },
                                  "accessConfigs": {
                                    "type": "object",
                                    "required": [
                                      "name",
                                      "type"
                                    ],
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "example": "external-nat"
                                      },
                                      "type": {
                                        "type": "string",
                                        "description": "Possible values: ONE_TO_ONE_NAT\n",
                                        "example": "ONE_TO_ONE_NAT"
                                      }
                                    }
                                  },
                                  "aliasIpRanges": {
                                    "type": "object",
                                    "required": [
                                      "ipCidrRange",
                                      "subnetworkRangeName"
                                    ],
                                    "properties": {
                                      "ipCidrRange": {
                                        "type": "string",
                                        "description": "Required for the cluster.compute.networkInterfaces.aliasIpRanges object.\n",
                                        "example": "/24"
                                      },
                                      "subnetworkRangeName": {
                                        "type": "string",
                                        "description": "Required for the cluster.compute.networkInterfaces.aliasIpRanges object.\n",
                                        "example": "gke-test-native-vpc-pods-5cb557f7"
                                      }
                                    }
                                  }
                                }
                              },
                              "backendServices": {
                                "type": "object",
                                "description": "Settings for backend services.",
                                "required": [
                                  "backendServiceName"
                                ],
                                "properties": {
                                  "backendServiceName": {
                                    "type": "string",
                                    "description": "Required for the cluster.compute.backendServices object.",
                                    "example": "test-global-tcp"
                                  },
                                  "locationType": {
                                    "type": "string",
                                    "enum": [
                                      "regional",
                                      "global"
                                    ],
                                    "example": "regional"
                                  },
                                  "scheme": {
                                    "type": "string",
                                    "description": "Required if locationType is set to \"regional\".\n",
                                    "enum": [
                                      "EXTERNAL",
                                      "INTERNAL"
                                    ],
                                    "example": "EXTERNAL"
                                  },
                                  "namedPorts": {
                                    "type": "object",
                                    "required": [
                                      "name",
                                      "ports"
                                    ],
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "example": "https"
                                      },
                                      "ports": {
                                        "type": "array",
                                        "items": {
                                          "type": "integer"
                                        },
                                        "example": [
                                          443,
                                          8443
                                        ]
                                      }
                                    }
                                  }
                                }
                              },
                              "subnetName": {
                                "type": "string",
                                "description": "Subnet identifier for the Ocean cluster",
                                "example": "default"
                              },
                              "availabilityZones": {
                                "type": "array",
                                "description": "Availability zone(s) used by the Ocean cluster.",
                                "items": {
                                  "type": "string",
                                  "example": "us-west1-a"
                                }
                              },
                              "instanceTypes": {
                                "type": "object",
                                "description": "The type of instances that may or may not be a part of the Ocean cluster.",
                                "properties": {
                                  "whitelist": {
                                    "type": "array",
                                    "description": "Instance types allowed in the Ocean cluster. Cannot be configured if a deny list is configured.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "n1-standard-2"
                                    ]
                                  },
                                  "blacklist": {
                                    "type": "array",
                                    "description": "Instance types to avoid launching in the Ocean cluster. Cannot be configured if a permit list is configured.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "n2d-highcpu-96"
                                    ]
                                  },
                                  "filters": {
                                    "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/filters"
                                  },
                                  "preferredTypes": {
                                    "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/preferredTypes"
                                  }
                                }
                              },
                              "launchSpecification": {
                                "type": "object",
                                "required": [
                                  "sourceImage",
                                  "tags",
                                  "metadata",
                                  "serviceAccount"
                                ],
                                "properties": {
                                  "sourceImage": {
                                    "type": "string",
                                    "description": "URL of the image used to launch the instances.",
                                    "example": "https://www.googleapis.com/compute/v1/projects/gke-node-images/global/images/gke-1117-gke12-cos-69-10895-138-0-v190225-pre"
                                  },
                                  "metadata": {
                                    "type": "object",
                                    "description": "Set array of cluster metadata.\n",
                                    "properties": {
                                      "key": {
                                        "type": "string",
                                        "description": "Key of metadata key pair.\n",
                                        "example": "example_key1"
                                      },
                                      "value": {
                                        "type": "string",
                                        "description": "Value of metadata key pair.\n",
                                        "example": "exmample_value1"
                                      }
                                    }
                                  },
                                  "tags": {
                                    "type": "array",
                                    "description": "Every node launched from this configuration will be tagged with those tags.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "gke-cluster-name-12345-node"
                                    ]
                                  },
                                  "ipForwarding": {
                                    "type": "boolean",
                                    "example": true
                                  },
                                  "minCpuPlatform": {
                                    "type": "string",
                                    "description": "Set instance CPU platform.\n",
                                    "example": "Intel Sandy Bridge"
                                  },
                                  "serviceAccount": {
                                    "type": "string",
                                    "example": "265168459660-compute@developer.gserviceaccount.com",
                                    "description": "The service account used by applications running on the VM to call GCP APIs.\n"
                                  },
                                  "labels": {
                                    "type": "array",
                                    "description": "Set labels on cluster. Can set up to 60 labels\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string",
                                          "example": "spotinst-gke-original-node-pool"
                                        },
                                        "value": {
                                          "type": "string",
                                          "example": "test-native-vpc__default-pool"
                                        }
                                      }
                                    }
                                  },
                                  "rootVolumeSizeInGb": {
                                    "type": "integer",
                                    "description": "Optionally set root size (GB). Value should be greater than or equal to 100.",
                                    "example": 100
                                  },
                                  "rootVolumeType": {
                                    "type": "string",
                                    "description": "Set the root volume disk type.",
                                    "example": "pd-standard",
                                    "enum": [
                                      "pd-standard",
                                      "pd-ssd",
                                      "pd-balanced",
                                      "pd-extreme",
                                      "hyperdisk-balanced",
                                      "hyperdisk-balanced-high-availability"
                                    ]
                                  },
                                  "shieldedInstanceConfig": {
                                    "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/shieldedInstanceConfig"
                                  },
                                  "useAsTemplateOnly": {
                                    "type": "boolean",
                                    "description": "The configuration specified on the Ocean object will function only as a template for virtual node groups.\n",
                                    "default": false
                                  }
                                }
                              }
                            }
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2021-03-17T08:13:08.000Z",
                            "description": "A timestamp of the Ocean creation.\n"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2021-03-17T15:06:13.000Z",
                            "description": "A timestamp of the latest Ocean update.\n"
                          }
                        }
                      }
                    }
                  },
                  {
                    "type": "object",
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "required": [
                          "name"
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/cluster"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "The specification of the Ocean cluster.",
                                "required": [
                                  "name",
                                  "controllerClusterId",
                                  "compute"
                                ],
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "readOnly": true,
                                    "example": "o-abcd1234",
                                    "description": "Ocean cluster identifier.\n"
                                  },
                                  "name": {
                                    "type": "string",
                                    "example": "test",
                                    "description": "Add a name for the Ocean cluster.\n"
                                  },
                                  "controllerClusterId": {
                                    "type": "string",
                                    "example": "test-123124",
                                    "description": "Enter the Ocean cluster identifier.\n"
                                  },
                                  "gke": {
                                    "type": "object",
                                    "required": [
                                      "clusterName",
                                      "masterLocation"
                                    ],
                                    "description": "Use existing GKE cluster.\n",
                                    "properties": {
                                      "clusterName": {
                                        "type": "string",
                                        "description": "Required for the cluster.gke object.\n",
                                        "example": "test-cluster"
                                      },
                                      "masterLocation": {
                                        "type": "string",
                                        "description": "Required for the cluster.gke object.\n",
                                        "example": "us-central1-a"
                                      }
                                    }
                                  },
                                  "autoScaler": {
                                    "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/autoScaler"
                                  },
                                  "autoUpdate": {
                                    "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/autoUpdate"
                                  },
                                  "capacity": {
                                    "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/capacity"
                                  },
                                  "strategy": {
                                    "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/strategy"
                                  },
                                  "scheduling": {
                                    "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/scheduling"
                                  },
                                  "security": {
                                    "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/security"
                                  },
                                  "compute": {
                                    "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/compute"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2021-03-17T08:13:08.000Z",
                                    "description": "A timestamp of the Ocean creation.\n"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2021-03-17T15:06:13.000Z",
                                    "description": "A timestamp of the latest Ocean update.\n"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Clusters",
        "description": "List the configurations for all Ocean clusters in the specified account.\n",
        "operationId": "OceanGKEClusterList",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean GKE List Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/cluster"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/{oceanClusterId}/controllerHeartbeat": {
      "get": {
        "summary": "Get Heartbeat Status",
        "description": "Get the heartbeat status of the Ocean Controller for the cluster. <br /> The response returns the heartbeat status and the last heartbeat timestamp.\n",
        "operationId": "oceanGkeGetHeartbeatStatus",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Get Heartbeat Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/k8s/cluster/o-e0a2bd7c/controllerHeartbeat"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Controller Heartbeat",
                                "properties": {
                                  "status": {
                                    "type": "string",
                                    "example": "ACTIVE"
                                  },
                                  "lastHeartbeat": {
                                    "type": "string",
                                    "example": "2019-11-24T14:33:00.746Z"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:k8s:cluster:controllerHeartbeat"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/{oceanClusterId}": {
      "delete": {
        "summary": "Delete Cluster",
        "description": "Delete a specified Ocean cluster.\n",
        "operationId": "OceanGKEClusterDelete",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean GKE Delete Cluster Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/cluster/o-abcd1234"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Cluster",
        "description": "Get the configuration for a specified Ocean cluster.\n",
        "operationId": "OceanGKEClusterGet",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean GKE Get Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/cluster/o-abcd1234"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Cluster",
        "description": "All Ocean parameters are updatable, excluding the Name and controllerClusterId. <br /> This API supports partial updates, so specific fields can be updated separately.\n",
        "operationId": "OceanGKEClusterUpdate",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "cluster"
                    ],
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "description": "The specification of the Ocean cluster.",
                        "properties": {
                          "id": {
                            "type": "string",
                            "readOnly": true,
                            "example": "o-abcd1234",
                            "description": "Ocean cluster identifier.\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "test",
                            "description": "Add a name for the Ocean cluster.\n"
                          },
                          "autoScaler": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/autoScaler"
                          },
                          "autoUpdate": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/autoUpdate"
                          },
                          "capacity": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/capacity"
                          },
                          "strategy": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/strategy"
                          },
                          "scheduling": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/scheduling"
                          },
                          "security": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/security"
                          },
                          "compute": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/compute"
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2021-03-17T08:13:08.000Z",
                            "description": "A timestamp of the Ocean creation.\n"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2021-03-17T15:06:13.000Z",
                            "description": "A timestamp of the latest Ocean update.\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean GKE Update Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/cluster/o-abcd1234"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/{oceanClusterId}/reImport": {
      "put": {
        "summary": "Reimport Cluster",
        "description": "Reimport the cluster's configuration from GKE.\n",
        "operationId": "reImportGke",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Reimport cluster response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/cluster/o-12345abc/reImport"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "cluster": {
                                    "type": "object",
                                    "properties": {
                                      "oceanId": {
                                        "type": "string",
                                        "description": "The identifier of the Ocean cluster.\n",
                                        "example": "o-12345abc"
                                      },
                                      "associatedClusterName": {
                                        "type": "string",
                                        "description": "The name of the corresponding GKE cluster.\n",
                                        "example": "gke-cluster"
                                      },
                                      "isUpdated": {
                                        "type": "boolean",
                                        "description": "If `true`, then the Ocean's configuration was updated.\n",
                                        "example": true
                                      },
                                      "launchSpecs": {
                                        "type": "array",
                                        "description": "Shows the Ocean's virtual node groups and their update status.\n",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "launchSpecId": {
                                              "type": "string",
                                              "example": "ols-12345abc",
                                              "description": "The identifier of the virtual node group.\n"
                                            },
                                            "associatedNodePool": {
                                              "type": "string",
                                              "description": "The virtual node group's associated node pool in GKE.\n",
                                              "example": "default-pool"
                                            },
                                            "isUpdated": {
                                              "type": "boolean",
                                              "description": "If `true`, then the virtual node group's configuration was updated.\n",
                                              "example": true
                                            }
                                          }
                                        },
                                        "example": [
                                          {
                                            "launchSpecId": "ols-12345abc",
                                            "associatedNodePool": "default-pool",
                                            "isUpdated": true
                                          },
                                          {
                                            "launchSpecId": "ols-98765cba",
                                            "associatedNodePool": "pool-1",
                                            "isUpdated": false
                                          }
                                        ]
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/{oceanClusterId}/detachInstances": {
      "put": {
        "summary": "Detach Instances",
        "description": "Detach instances from your Ocean cluster.\n",
        "operationId": "oceanGkeDetachInstance",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "instancesToDetach"
                    ],
                    "properties": {
                      "instancesToDetach": {
                        "type": "array",
                        "description": "Array of instance identifiers to be detached.\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "sin-9d317117a0df-oesg-02cff6a8",
                          "sin-49784809d76a-oesg-02cff6a8"
                        ]
                      },
                      "shouldTerminateInstances": {
                        "type": "boolean",
                        "description": "Determines whether the detached instances should be terminated or not. (Default true)\n",
                        "example": true
                      },
                      "shouldDecrementTargetCapacity": {
                        "type": "boolean",
                        "description": "Determines whether the Ocean cluster's target capacity should be decremented. (Default false)\n",
                        "example": false
                      },
                      "drainingTimeout": {
                        "type": "integer",
                        "description": "(Applies only if shouldTerminateInstances is on) The draining timeout (in seconds) before terminating the instance.\n"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/cluster/o-4c794b06/detachInstances"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/{oceanClusterId}/log": {
      "summary": "Ocean for GKE",
      "get": {
        "summary": "Get Elastilog",
        "description": "Get group’s Elastilog by \n",
        "operationId": "oceanGkeFetchLog",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1mcs~1ecs~1cluster~1%7BclusterName%7D~1costs/get/parameters/2"
          },
          {
            "$ref": "#/paths/~1mcs~1ecs~1cluster~1%7BclusterName%7D~1costs/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1log/get/parameters/4"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1log/get/parameters/5"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1log/get/parameters/6"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Get Log Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "request": {
                      "type": "object",
                      "description": "Original request properties.\n",
                      "properties": {
                        "id": {
                          "type": "string",
                          "example": "3213f42e-455e-4801-a185-cd3eb65fac5f",
                          "description": "Unique identifier associated with this request.\n"
                        },
                        "url": {
                          "type": "string",
                          "example": "/ocean/gcp/k8s/cluster/o-e0a2bd7c/log?fromDate=2020-10-06&toDate=2020-10-08&severity=ALL&limit=500",
                          "description": "The URL that was used for the request.\n"
                        },
                        "method": {
                          "type": "string",
                          "example": "GET",
                          "description": "The HTTP **METHOD** used for the request.\n"
                        },
                        "timestamp": {
                          "type": "string",
                          "example": "2020-10-05T16:20:38.579Z",
                          "description": "When the request was received by Spot.\n"
                        }
                      }
                    },
                    "response": {
                      "type": "object",
                      "description": "Response package that includes status, type, and any relevant data.\n",
                      "properties": {
                        "status": {
                          "type": "object",
                          "properties": {
                            "code": {
                              "type": "integer",
                              "example": "200",
                              "description": "HTTP status code assigned to this response.\n"
                            },
                            "message": {
                              "type": "string",
                              "example": "OK",
                              "description": "HTTP status message for the respective status code.\n"
                            }
                          }
                        },
                        "kind": {
                          "type": "string",
                          "example": "spotinst:ocean:cluster:log"
                        },
                        "items": {
                          "type": "array",
                          "description": "Array of data objects.\n",
                          "items": {
                            "type": "object",
                            "properties": {
                              "message": {
                                "type": "string"
                              },
                              "severity": {
                                "type": "string"
                              },
                              "createdAt": {
                                "type": "string"
                              }
                            }
                          },
                          "example": [
                            {
                              "message": "Ocean o-e0a2bd7c successfully created.",
                              "severity": "INFO",
                              "createdAt": "2020-10-07T09:51:12.000Z"
                            }
                          ]
                        },
                        "count": {
                          "type": "integer",
                          "example": "1"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/{oceanClusterId}/aggregatedCosts": {
      "post": {
        "summary": "Get Cluster Aggregated Detailed Costs",
        "description": "Provides Kubernetes cluster resource usage and costs over a time interval which can be grouped and/or filtered by label/annotaion.\\\nFor example - application name (webapp, backend), environment (production, staging), version etc.\\\nThe response will contain a breakdown of the cluster resource costs($) in terms of compute (CPU, memory) and storage.\nThe response will group the cluster usage costs based on preselected default of application namespace or user selected label or annotation.\\\nWithin the group, resource costs are broken down per resource kind (Deployment, DaemonSet etc.).\n\nTime Rounding Down: The CostAnalysis API applies rounding down to the hours provided during the call.\\\nFor example, the value 1707004799099 (In GMT) representing Saturday, February 3, 2024, 23:59:59.099 is rounded down to Saturday, February 3, 2024, 23:00:00.000, resulting in the omission of one hour of cost.\n",
        "operationId": "oceanGkeK8sClusterAggregatedDetailedCosts",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "endTime",
                      "startTime"
                    ],
                    "properties": {
                      "startTime": {
                        "type": "string",
                        "example": "2018-06-20T11:35:02.745Z",
                        "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "endTime": {
                        "type": "string",
                        "example": "2018-06-22T11:30:01.745Z",
                        "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "groupBy": {
                        "type": "string",
                        "description": "The parameter we want to group the costs by.\n",
                        "default": "namespace",
                        "example": "namespace.label.env",
                        "enum": [
                          "namespace",
                          "namespace.label.${labelKey}",
                          "resource.label.${labelKey}",
                          "resource.annotation.${annotationKey}",
                          "namespace.annotation.${annotationKey}"
                        ]
                      },
                      "filter": {
                        "type": "object",
                        "description": "Describe how to filter the costs. Optional field.",
                        "required": [
                          "scope",
                          "conditions"
                        ],
                        "properties": {
                          "scope": {
                            "type": "string",
                            "enum": [
                              "namespace",
                              "resource"
                            ]
                          },
                          "conditions": {
                            "type": "object",
                            "required": [
                              "anyMatch"
                            ],
                            "properties": {
                              "anyMatch": {
                                "type": "array",
                                "description": "Array of conditions set that OR operator is applied between them.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "allMatch"
                                  ],
                                  "properties": {
                                    "allMatch": {
                                      "type": "array",
                                      "description": "Array of conditions that AND operator is applied between them.\\\nFor example, (label env equals prod) AND (label app exists)\n",
                                      "items": {
                                        "type": "object",
                                        "description": "The basic expression of a condition",
                                        "required": [
                                          "type",
                                          "key",
                                          "operator"
                                        ],
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "enum": [
                                              "label",
                                              "annotation"
                                            ]
                                          },
                                          "key": {
                                            "type": "string",
                                            "description": "May be any string, but shouldn't be empty.\n",
                                            "example": "env"
                                          },
                                          "operator": {
                                            "type": "string",
                                            "enum": [
                                              "equals",
                                              "notEquals",
                                              "exists",
                                              "notExists"
                                            ]
                                          },
                                          "value": {
                                            "type": "string",
                                            "description": "Required whenever the operator is \"equals\" or \"notEquals\".\n",
                                            "example": "prod"
                                          }
                                        }
                                      }
                                    }
                                  }
                                },
                                "example": [
                                  {
                                    "allMatch": [
                                      {
                                        "type": "label",
                                        "key": "env",
                                        "operator": "equals",
                                        "value": "prod"
                                      },
                                      {
                                        "type": "label",
                                        "key": "app",
                                        "operator": "exists"
                                      }
                                    ]
                                  },
                                  {
                                    "allMatch": [
                                      {
                                        "type": "annotation",
                                        "key": "meta.data",
                                        "operator": "exists"
                                      }
                                    ]
                                  }
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Cluster Aggregated Detailed Costs Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/cluster/o-abcd1234/aggregatedCosts"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "result": {
                                    "type": "object",
                                    "properties": {
                                      "totalForDuration": {
                                        "type": "object",
                                        "properties": {
                                          "startTime": {
                                            "type": "string",
                                            "example": "2018-06-20T11:35:01.745Z",
                                            "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                          },
                                          "endTime": {
                                            "type": "string",
                                            "example": "2018-06-22T11:30:01.745Z",
                                            "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                          },
                                          "summary": {
                                            "type": "object",
                                            "properties": {
                                              "total": {
                                                "type": "number",
                                                "example": 41772.882658036,
                                                "description": "The total costs of cluster in a given time range"
                                              },
                                              "compute": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 40668.1299631538,
                                                    "description": "The total compute costs of the cluster in a given time range"
                                                  },
                                                  "workloads": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 40668.1299631538
                                                      }
                                                    }
                                                  },
                                                  "headroom": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 0
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "storage": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 1104.7526948819,
                                                    "description": "The total storage costs of the cluster in given time range"
                                                  },
                                                  "block": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 1104.7526948819
                                                      },
                                                      "pdPv": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 1104.7526948819
                                                          }
                                                        }
                                                      },
                                                      "pdBoot": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 0
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          "detailedCosts": {
                                            "type": "object",
                                            "properties": {
                                              "groupedBy": {
                                                "type": "string",
                                                "example": "n.l.name"
                                              },
                                              "aggregations": {
                                                "type": "object",
                                                "description": "Contains aggregation for each group by value.\n",
                                                "additionalProperties": {
                                                  "type": "object",
                                                  "description": "For example - if group by is namespace so each property name will a namesapce in the cluster.",
                                                  "properties": {
                                                    "summary": {
                                                      "type": "object",
                                                      "properties": {
                                                        "total": {
                                                          "type": "number",
                                                          "example": 425.23778
                                                        },
                                                        "compute": {
                                                          "type": "object",
                                                          "properties": {
                                                            "total": {
                                                              "type": "number",
                                                              "example": 125.23778
                                                            }
                                                          }
                                                        },
                                                        "storage": {
                                                          "type": "object",
                                                          "properties": {
                                                            "total": {
                                                              "type": "number",
                                                              "example": 300
                                                            },
                                                            "block": {
                                                              "type": "object",
                                                              "properties": {
                                                                "total": {
                                                                  "type": "number",
                                                                  "example": 300
                                                                },
                                                                "pdPv": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "total": {
                                                                      "type": "number",
                                                                      "example": 300
                                                                    }
                                                                  }
                                                                },
                                                                "pdBoot": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "total": {
                                                                      "type": "number",
                                                                      "example": 0
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    },
                                                    "resources": {
                                                      "type": "array",
                                                      "items": {
                                                        "type": "object",
                                                        "properties": {
                                                          "metadata": {
                                                            "type": "object",
                                                            "properties": {
                                                              "name": {
                                                                "type": "string",
                                                                "example": "k8s-events"
                                                              },
                                                              "type": {
                                                                "type": "string",
                                                                "example": "Deployment"
                                                              },
                                                              "namespace": {
                                                                "type": "string",
                                                                "example": "kube-system"
                                                              }
                                                            }
                                                          },
                                                          "total": {
                                                            "type": "number",
                                                            "example": 1.655635222
                                                          },
                                                          "compute": {
                                                            "type": "object",
                                                            "properties": {
                                                              "total": {
                                                                "type": "number",
                                                                "example": 1.4213600158
                                                              }
                                                            }
                                                          },
                                                          "storage": {
                                                            "type": "object",
                                                            "properties": {
                                                              "total": {
                                                                "type": "number",
                                                                "example": 0.2342752062
                                                              },
                                                              "block": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "total": {
                                                                    "type": "number",
                                                                    "example": 0.2342752062
                                                                  },
                                                                  "pdPv": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "total": {
                                                                        "type": "number",
                                                                        "example": 0
                                                                      }
                                                                    }
                                                                  },
                                                                  "pdBoot": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "total": {
                                                                        "type": "number",
                                                                        "example": 0.2342752062
                                                                      }
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "ocean:k8s:cluster:aggregatedCosts:detailed"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/{oceanClusterId}/aggregatedCosts/summary": {
      "post": {
        "summary": "Get Cluster Aggregated Summary Costs",
        "description": "Provides Kubernetes cluster summary usage and costs over a time interval which can be grouped and/or filtered by label/annotaion,\\\nfor example - application name (webapp, backend), environment (production, staging), version etc.\\\nThe response will contain a breakdown of the cluster resource costs($) in terms of compute (CPU, memory), storage (block, file, rootVolume).\nThe response will group the cluster usage costs based on preselected default of application namespace or user selected label or annotation.\n\nTime Rounding Down: The CostAnalysis API applies rounding down to the hours provided during the call.\\\nFor example, the value 1707004799099 (In GMT) representing Saturday, February 3, 2024, 23:59:59.099 is rounded down to Saturday, February 3, 2024, 23:00:00.000, resulting in the omission of one hour of cost.\n",
        "operationId": "oceanGkeK8sClusterAggregatedSummaryCosts",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "endTime",
                      "startTime"
                    ],
                    "properties": {
                      "startTime": {
                        "type": "string",
                        "example": "2023-07-20T11:35:01.745Z",
                        "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "endTime": {
                        "type": "string",
                        "example": "2023-07-22T11:30:01.745Z",
                        "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "groupBy": {
                        "type": "string",
                        "description": "The parameter we want to group the costs by.\n",
                        "default": "namespace",
                        "example": "namespace.label.env",
                        "enum": [
                          "namespace",
                          "namespace.label.${labelKey}",
                          "resource.label.${labelKey}",
                          "resource.annotation.${annotationKey}",
                          "namespace.annotation.${annotationKey}"
                        ]
                      },
                      "filter": {
                        "type": "object",
                        "description": "Describe how to filter the costs. Optional field.",
                        "required": [
                          "scope",
                          "conditions"
                        ],
                        "properties": {
                          "scope": {
                            "type": "string",
                            "enum": [
                              "namespace",
                              "resource"
                            ]
                          },
                          "conditions": {
                            "type": "object",
                            "required": [
                              "anyMatch"
                            ],
                            "properties": {
                              "anyMatch": {
                                "type": "array",
                                "description": "Array of conditions set that OR operator is applied between them.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "allMatch"
                                  ],
                                  "properties": {
                                    "allMatch": {
                                      "type": "array",
                                      "description": "Array of conditions that AND operator is applied between them.\\\nFor example, (label env equals prod) AND (label app exists)\n",
                                      "items": {
                                        "type": "object",
                                        "description": "The basic expression of a condition",
                                        "required": [
                                          "type",
                                          "key",
                                          "operator"
                                        ],
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "enum": [
                                              "label",
                                              "annotation"
                                            ]
                                          },
                                          "key": {
                                            "type": "string",
                                            "description": "May be any string, but shouldn't be empty.\n",
                                            "example": "env"
                                          },
                                          "operator": {
                                            "type": "string",
                                            "enum": [
                                              "equals",
                                              "notEquals",
                                              "exists",
                                              "notExists"
                                            ]
                                          },
                                          "value": {
                                            "type": "string",
                                            "description": "Required whenever the operator is \"equals\" or \"notEquals\".\n",
                                            "example": "prod"
                                          }
                                        }
                                      }
                                    }
                                  }
                                },
                                "example": [
                                  {
                                    "allMatch": [
                                      {
                                        "type": "label",
                                        "key": "env",
                                        "operator": "equals",
                                        "value": "prod"
                                      },
                                      {
                                        "type": "label",
                                        "key": "app",
                                        "operator": "exists"
                                      }
                                    ]
                                  },
                                  {
                                    "allMatch": [
                                      {
                                        "type": "annotation",
                                        "key": "meta.data",
                                        "operator": "exists"
                                      }
                                    ]
                                  }
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Cluster Aggregated Summary Costs Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/cluster/o-abcd1234/aggregatedCosts/summary"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "result": {
                                    "type": "object",
                                    "properties": {
                                      "totalForDuration": {
                                        "type": "object",
                                        "properties": {
                                          "startTime": {
                                            "type": "string",
                                            "example": "2023-07-20T11:35:01.745Z",
                                            "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                          },
                                          "endTime": {
                                            "type": "string",
                                            "example": "2023-07-22T11:30:01.745Z",
                                            "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                          },
                                          "summary": {
                                            "type": "object",
                                            "properties": {
                                              "total": {
                                                "type": "number",
                                                "example": 41772.882658035785,
                                                "format": "float",
                                                "description": "The total costs of cluster in a given time range"
                                              },
                                              "compute": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 40668.1299631538,
                                                    "format": "float",
                                                    "description": "The total compute costs of the cluster in a given time range"
                                                  },
                                                  "workloads": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 39882.13803327978,
                                                        "format": "float"
                                                      }
                                                    }
                                                  },
                                                  "headroom": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 0,
                                                        "format": "float"
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "storage": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 1104.7526948819868,
                                                    "format": "float",
                                                    "description": "The total storage costs of the cluster in given time range"
                                                  },
                                                  "block": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 1104.7526948819868,
                                                        "format": "float"
                                                      },
                                                      "pdPv": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 1104.7526948819868,
                                                            "format": "float"
                                                          }
                                                        }
                                                      },
                                                      "pdBoot": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 0,
                                                            "format": "float"
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "ocean:k8s:cluster:aggregatedCosts:summary"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/{oceanClusterId}/instanceTypeFiltersSimulation": {
      "post": {
        "summary": "Instance Types Filters Simulation",
        "description": "Returns all instances types that match the given filters. These instance types will be used if the cluster is configured with these filters.\n",
        "operationId": "oceanGkeInstanceTypeFiltersSimulation",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "filters"
                    ],
                    "properties": {
                      "filters": {
                        "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/filters"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Instance Types Filters Simulation Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/cluster/o-abcd1234/instanceTypeFiltersSimulation"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "filteredInstanceTypes": {
                                    "type": "array",
                                    "description": "The simulated instance types.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "n1-highcpu-4",
                                      "n1-highcpu-2",
                                      "n1-highcpu-8",
                                      "n1-standard-2",
                                      "n1-standard-1"
                                    ]
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s:instanceTypesFilters:simulation"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/launchSpec": {
      "summary": "Ocean for GKE",
      "post": {
        "summary": "Create VNG",
        "description": "Create a Virtual Node Group.\n",
        "operationId": "OceanGKELaunchSpecCreate",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec/post/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "launchSpec"
                    ],
                    "properties": {
                      "launchSpec": {
                        "type": "object",
                        "description": "Ocean Cluster Virtual Node Group (VNG).\n",
                        "required": [
                          "oceanId",
                          "sourceImage",
                          "metadata"
                        ],
                        "properties": {
                          "oceanId": {
                            "type": "string",
                            "example": "o-1fff54ed",
                            "description": "The Ocean cluster identifier. Required to create the virtual node group.\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "lp_name",
                            "description": "Set the name for the virtual node group.\n"
                          },
                          "sourceImage": {
                            "type": "string",
                            "example": "https://www.googleapis.com/compute/v1/projects/gke-node-images/global/images/container-v1-3-v20160517",
                            "description": "Set the image URL. Can be null.\n"
                          },
                          "serviceAccount": {
                            "type": "string",
                            "example": "265168459660-compute@developer.gserviceaccount.com",
                            "description": "The account used by applications running on the VM to call GCP APIs.\n"
                          },
                          "rootVolumeSizeInGb": {
                            "type": "integer",
                            "description": "Set root volume size (in GB).",
                            "example": 8
                          },
                          "rootVolumeType": {
                            "type": "string",
                            "description": "Set the root volume disk type.",
                            "example": "pd-standard",
                            "enum": [
                              "pd-standard",
                              "pd-ssd",
                              "pd-balanced",
                              "pd-extreme",
                              "hyperdisk-balanced",
                              "hyperdisk-balanced-high-availability"
                            ]
                          },
                          "metadata": {
                            "type": "array",
                            "description": "Add metadata to the cluster.\n",
                            "items": {
                              "type": "object",
                              "required": [
                                "key",
                                "value"
                              ],
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Set the metadata key. Required for launchSpec.metadata.",
                                  "example": "key1"
                                },
                                "value": {
                                  "type": "string",
                                  "description": "Set the metadata name. Required for launchSpec.metadata.",
                                  "example": "value1"
                                }
                              }
                            },
                            "example": [
                              {
                                "key": "key1",
                                "value": "value1"
                              },
                              {
                                "key": "key2",
                                "value": "value2"
                              }
                            ]
                          },
                          "instanceTypes": {
                            "type": "array",
                            "description": "An array of supported machine types for the virtual node group. Can be null.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "n1-standard-1",
                              "n1-standard-2"
                            ]
                          },
                          "filters": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/filters"
                          },
                          "preferredTypes": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/preferredTypes"
                          },
                          "availabilityZones": {
                            "type": "array",
                            "description": "An array holding availability zones, this configures the availability zones the Ocean may launch instances in per VNG. Can be null.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "us-central1-a",
                              "us-central1-b"
                            ]
                          },
                          "tags": {
                            "type": "array",
                            "description": "Every node launched from this VNG will have those tags. If the value is null, the nodes will have the tags configured at the cluster level.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "gke-cluster-name-12345-node",
                              "network-tag-1"
                            ]
                          },
                          "taints": {
                            "type": "array",
                            "description": "Add taints to the virtual node group.",
                            "items": {
                              "type": "object",
                              "required": [
                                "key",
                                "value",
                                "effect"
                              ],
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Set taint key."
                                },
                                "value": {
                                  "type": "string",
                                  "description": "Set taint value."
                                },
                                "effect": {
                                  "type": "string",
                                  "description": "Set taint effect."
                                }
                              }
                            },
                            "example": [
                              {
                                "key": "taintKey",
                                "value": "taintValue",
                                "effect": "NoSchedule"
                              }
                            ]
                          },
                          "labels": {
                            "type": "array",
                            "description": "An array of labels to add to the virtual node group. Only custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.",
                            "items": {
                              "type": "object",
                              "required": [
                                "key",
                                "value"
                              ],
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Set label key.\\\nThe following are not allowed:\n* \"kubernetes.io/hostname\"\n* \"failure-domain.beta.kubernetes.io/zone\"\n* \"topology.kubernetes.io/zone\"\n* \"failure-domain.beta.kubernetes.io/region\"\n* \"topology.kubernetes.io/region\"\n* \"beta.kubernetes.io/instance-type\"\n* \"node.kubernetes.io/instance-type\"\n* \"beta.kubernetes.io/os\"\n* \"kubernetes.io/os\"\n* \"beta.kubernetes.io/arch\"\n* \"kubernetes.io/arch\"\n* \"spotinst.io/node-lifecycle\"\n* \"spotinst.io/gpu-type\"\n"
                                },
                                "value": {
                                  "type": "string",
                                  "description": "Set label value."
                                }
                              }
                            },
                            "example": [
                              {
                                "key": "env",
                                "value": "test"
                              }
                            ]
                          },
                          "autoScale": {
                            "type": "object",
                            "description": "Object specifying the automatic scaling of an Ocean VNG.\n",
                            "properties": {
                              "headrooms": {
                                "type": "array",
                                "description": "Set custom headroom per virtual node group. Provide a list of launchSpec.autoScale.headroom objects.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "numOfUnits"
                                  ],
                                  "properties": {
                                    "cpuPerUnit": {
                                      "type": "integer",
                                      "description": "Configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n",
                                      "example": 1000
                                    },
                                    "memoryPerUnit": {
                                      "type": "integer",
                                      "description": "Configure the amount of memory (MiB) to allocate the headroom.\n",
                                      "example": 2048
                                    },
                                    "gpuPerUnit": {
                                      "type": "integer",
                                      "description": "The amount of GPU to allocate per headroom unit.\n",
                                      "example": 0
                                    },
                                    "numOfUnits": {
                                      "type": "integer",
                                      "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                      "example": 3
                                    }
                                  }
                                }
                              },
                              "autoHeadroomPercentage": {
                                "type": "integer",
                                "description": "Number between 0-200 to control the headroom % of the specific Virtual Node Group. Effective when cluster.autoScaler.isAutoConfig=true is set on the Ocean cluster\n",
                                "example": 20
                              },
                              "down": {
                                "type": "object",
                                "description": "Autoscaling scale down operations.\n",
                                "properties": {
                                  "maxScaleDownPercentage": {
                                    "type": "number",
                                    "format": "double",
                                    "minimum": 0.1,
                                    "maximum": 100,
                                    "description": "The maximum percentage allowed to scale down in a single scaling action on the nodes running in a specific VNG. Allowed only if maxScaleDownPercentage is set to null at the cluster level.\n",
                                    "example": 30
                                  }
                                }
                              }
                            }
                          },
                          "resourceLimits": {
                            "type": "object",
                            "properties": {
                              "maxInstanceCount": {
                                "description": "Option to set a maximum number of instances per virtual node group. Can be null. If set, the value must be greater than or equal to 0.\n",
                                "type": "integer",
                                "example": 5
                              },
                              "minInstanceCount": {
                                "description": "Option to set a minimum number of instances per virtual node group.\\\nCan be null. If set, value must be greater than or equal to 0.\n",
                                "type": "integer",
                                "example": 2
                              }
                            }
                          },
                          "restrictScaleDown": {
                            "type": "boolean",
                            "description": "When set to True, VNG nodes will be treated as if all pods running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints).\nTherefore, Ocean will not scale nodes down unless they are empty.\n",
                            "example": false
                          },
                          "shieldedInstanceConfig": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/shieldedInstanceConfig"
                          },
                          "strategy": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/strategy"
                          },
                          "storage": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/storage"
                          },
                          "scheduling": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/scheduling"
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2019-06-03T08:13:08.000Z"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2019-06-10T15:06:13.000Z"
                          },
                          "networkInterfaces": {
                            "type": "array",
                            "required": [
                              "accessConfigs",
                              "network"
                            ],
                            "description": "Settings for network interfaces\n",
                            "items": {
                              "type": "object",
                              "required": [
                                "network"
                              ],
                              "properties": {
                                "network": {
                                  "type": "string",
                                  "description": "The name of the network.\n",
                                  "example": "default"
                                },
                                "projectId": {
                                  "type": "string",
                                  "description": "Use a network resource from a different project. Set the project identifier to use its network resource. This parameter is relevant only if the network resource is in a different project.\n",
                                  "example": "test-project"
                                },
                                "accessConfigs": {
                                  "type": "array",
                                  "description": "The network protocol of the VNG.\n",
                                  "required": [
                                    "name",
                                    "type"
                                  ],
                                  "items": {
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "description": "The name of the access configuration.\n",
                                        "example": "external-nat"
                                      },
                                      "type": {
                                        "type": "string",
                                        "description": "The type of the access configuration.\n",
                                        "enum": [
                                          "ONE_TO_ONE_NAT"
                                        ],
                                        "example": "ONE_TO_ONE_NAT"
                                      }
                                    }
                                  }
                                },
                                "aliasIpRanges": {
                                  "type": "array",
                                  "description": "use the imported node pool’s associated aliasIpRange to assign secondary IP addresses to the nodes. Cannot be changed after VNG creation.",
                                  "items": {
                                    "required": [
                                      "ipCidrRange",
                                      "subnetworkRangeName"
                                    ],
                                    "properties": {
                                      "ipCidrRange": {
                                        "type": "string",
                                        "description": "specify the IP address range in CIDR notation that can be used for the alias IP addresses associated with the imported node pool.\n",
                                        "example": "/24"
                                      },
                                      "subnetworkRangeName": {
                                        "type": "string",
                                        "description": "specify the IP address range for the subnet secondary IP range.\n",
                                        "example": "gke-test-native-vpc-pods-5cb557f7"
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/launchSpec"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec/post/requestBody/content/application~1json/schema/allOf/0/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List VNGs",
        "operationId": "OceanGKELaunchSpecList",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "oceanId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "o-12345abc",
            "description": "Identifier of the Ocean cluster.\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/launchSpec"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec/post/requestBody/content/application~1json/schema/allOf/0/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/launchSpec/import": {
      "summary": "Ocean for GKE",
      "post": {
        "summary": "Import GKE Node Pool To VNG",
        "description": "Returns an Ocean Virtual Node Group (VNG) configuration based on a given GCP GKE Cluster Node Pool.\\\nThe returned value (\"Imported VNG\") can then be used as input to the Create VNG API in order to create an actual VNG in your Ocean cluster.\n",
        "operationId": "oceanGkeImportNodePoolToLaunchSpec",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec/get/parameters/1"
          },
          {
            "in": "query",
            "name": "nodePoolName",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "test",
            "description": "Name of the Node Pool.\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/launchSpec/import"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "Ocean Cluster Virtual Node Group (VNG).\n",
                                "required": [
                                  "oceanId",
                                  "sourceImage"
                                ],
                                "properties": {
                                  "oceanId": {
                                    "type": "string",
                                    "example": "o-1fff54ed",
                                    "description": "The Ocean cluster identifier. Required to create the virtual node group.\n"
                                  },
                                  "sourceImage": {
                                    "type": "string",
                                    "example": "https://www.googleapis.com/compute/v1/projects/gke-node-images/global/images/container-v1-3-v20160517",
                                    "description": "Set the image URL. Can be null.\n"
                                  },
                                  "serviceAccount": {
                                    "type": "string",
                                    "example": "265168459660-compute@developer.gserviceaccount.com",
                                    "description": "The account used by applications running on the VM to call GCP APIs.\n"
                                  },
                                  "rootVolumeType": {
                                    "type": "string",
                                    "description": "Set the root volume disk type.",
                                    "example": "pd-standard",
                                    "enum": [
                                      "pd-standard",
                                      "pd-ssd",
                                      "pd-balanced",
                                      "pd-extreme",
                                      "hyperdisk-balanced",
                                      "hyperdisk-balanced-high-availability"
                                    ]
                                  },
                                  "metadata": {
                                    "type": "array",
                                    "required": [
                                      "key",
                                      "value"
                                    ],
                                    "description": "Add metadata to the cluster.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string",
                                          "description": "Set the metadata key. Required for launchSpec.metadata.",
                                          "example": "key1"
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "Set the metadata name. Required for launchSpec.metadata.",
                                          "example": "value1"
                                        }
                                      }
                                    },
                                    "example": [
                                      {
                                        "key": "key1",
                                        "value": "value1"
                                      },
                                      {
                                        "key": "key2",
                                        "value": "value2"
                                      }
                                    ]
                                  },
                                  "availabilityZones": {
                                    "type": "array",
                                    "description": "An array holding availability zones, this configures the availability zones the Ocean may launch instances in per VNG. Can be null.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "us-central1-a",
                                      "us-central1-b"
                                    ]
                                  },
                                  "tags": {
                                    "type": "array",
                                    "description": "Every node launched from this VNG will have those tags. If the value is null, the nodes will have the tags configured at the cluster level.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "gke-cluster-name-12345-node",
                                      "network-tag-1"
                                    ]
                                  },
                                  "taints": {
                                    "type": "array",
                                    "description": "Add taints to the virtual node group.",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string",
                                          "description": "Set taint key."
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "Set taint value."
                                        },
                                        "effect": {
                                          "type": "string",
                                          "description": "Set taint effect."
                                        }
                                      }
                                    },
                                    "example": [
                                      {
                                        "key": "taintKey",
                                        "value": "taintValue",
                                        "effect": "NoSchedule"
                                      }
                                    ]
                                  },
                                  "labels": {
                                    "type": "array",
                                    "description": "An array of labels to add to the virtual node group. Only custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string",
                                          "description": "Set label key.\\\nThe following are not allowed:\n* \"kubernetes.io/hostname\"\n* \"failure-domain.beta.kubernetes.io/zone\"\n* \"topology.kubernetes.io/zone\"\n* \"failure-domain.beta.kubernetes.io/region\"\n* \"topology.kubernetes.io/region\"\n* \"beta.kubernetes.io/instance-type\"\n* \"node.kubernetes.io/instance-type\"\n* \"beta.kubernetes.io/os\"\n* \"kubernetes.io/os\"\n* \"beta.kubernetes.io/arch\"\n* \"kubernetes.io/arch\"\n* \"spotinst.io/node-lifecycle\"\n* \"spotinst.io/gpu-type\"\n"
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "Set label value."
                                        }
                                      }
                                    },
                                    "example": [
                                      {
                                        "key": "env",
                                        "value": "test"
                                      }
                                    ]
                                  },
                                  "shieldedInstanceConfig": {
                                    "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/shieldedInstanceConfig"
                                  },
                                  "storage": {
                                    "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema/properties/storage"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/launchSpec/{launchSpecId}": {
      "summary": "Ocean for GKE",
      "delete": {
        "summary": "Delete VNG",
        "description": "Delete a specified virtual node group in an Ocean cluster.\n",
        "operationId": "OceanGKELaunchSpecDelete",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1launchSpec~1%7BlaunchSpecId%7D/delete/parameters/2"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Delete Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/launchSpec/ols-12345abc"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update VNG",
        "description": "All Ocean parameters in a virtual node group are updatable.\n",
        "operationId": "OceanGKELaunchSpecUpdate",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "description": "Ocean Cluster Virtual Node Group (VNG).\n",
                "required": [
                  "oceanId",
                  "sourceImage"
                ],
                "properties": {
                  "oceanId": {
                    "type": "string",
                    "example": "o-1fff54ed",
                    "description": "The Ocean cluster identifier. Required to create the virtual node group.\n"
                  },
                  "name": {
                    "type": "string",
                    "example": "lp_name",
                    "description": "Set the name for the virtual node group.\n"
                  },
                  "sourceImage": {
                    "type": "string",
                    "example": "https://www.googleapis.com/compute/v1/projects/gke-node-images/global/images/container-v1-3-v20160517",
                    "description": "Set the image URL. Can be null.\n"
                  },
                  "serviceAccount": {
                    "type": "string",
                    "example": "265168459660-compute@developer.gserviceaccount.com",
                    "description": "The account used by applications running on the VM to call GCP APIs.\n"
                  },
                  "rootVolumeSizeInGb": {
                    "type": "integer",
                    "description": "Set root volume size (in GB).",
                    "example": 8
                  },
                  "rootVolumeType": {
                    "type": "string",
                    "description": "Set the root volume disk type.",
                    "example": "pd-standard",
                    "enum": [
                      "pd-standard",
                      "pd-ssd",
                      "pd-balanced",
                      "pd-extreme",
                      "hyperdisk-balanced",
                      "hyperdisk-balanced-high-availability"
                    ]
                  },
                  "metadata": {
                    "type": "array",
                    "description": "Add metadata to the cluster.\n",
                    "items": {
                      "type": "object",
                      "required": [
                        "key",
                        "value"
                      ],
                      "properties": {
                        "key": {
                          "type": "string",
                          "description": "Set the metadata key. Required for launchSpec.metadata.",
                          "example": "key1"
                        },
                        "value": {
                          "type": "string",
                          "description": "Set the metadata name. Required for launchSpec.metadata.",
                          "example": "value1"
                        }
                      }
                    },
                    "example": [
                      {
                        "key": "key1",
                        "value": "value1"
                      },
                      {
                        "key": "key2",
                        "value": "value2"
                      }
                    ]
                  },
                  "instanceTypes": {
                    "type": "array",
                    "description": "An array of supported machine types for the virtual node group. Can be null.\n",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "n1-standard-1",
                      "n1-standard-2"
                    ]
                  },
                  "filters": {
                    "type": "object",
                    "description": "List of filters. The Instance types that match with all filters compose the Ocean's whitelist parameter.  Cannot be configured together with whitelist/blacklist.\n",
                    "title": "InstanceTypesFilters",
                    "properties": {
                      "minVcpu": {
                        "type": "integer",
                        "description": "Minimum number of vcpus available.\n",
                        "minimum": 0,
                        "example": 2
                      },
                      "maxVcpu": {
                        "type": "integer",
                        "description": "Maximum number of vcpus available.\n",
                        "minimum": 1,
                        "example": 16
                      },
                      "minMemoryGiB": {
                        "type": "number",
                        "format": "double",
                        "description": "Minimum amount of Memory (GiB).\n",
                        "minimum": 0,
                        "example": 8
                      },
                      "maxMemoryGiB": {
                        "type": "number",
                        "format": "double",
                        "description": "Maximum amount of Memory (GiB).\n",
                        "minimum": 0,
                        "example": 16
                      },
                      "includeFamilies": {
                        "type": "array",
                        "description": "Types belonging to a family from the IncludeFamilies will be available for scaling (asterisk wildcard is also supported).\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "c2",
                          "c3"
                        ]
                      },
                      "excludeFamilies": {
                        "type": "array",
                        "description": "Types belonging to a family from the ExcludeFamilies will not be available for scaling (asterisk wildcard is also supported).\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "n2",
                          "c3"
                        ]
                      }
                    }
                  },
                  "preferredTypes": {
                    "type": "array",
                    "description": "When Ocean scales up VMs, it prioritizes the preferred instance types for launching new nodes.  If launching nodes from this preferred list is not feasible, Ocean will then proceed to utilize the configured instance  types available within the cluster.  Note that the preferred types must be a subset of the instance types configured for the cluster/vng.\n",
                    "title": "preferredTypes",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "c3d-standard-4",
                      "c3d-standard-8"
                    ]
                  },
                  "availabilityZones": {
                    "type": "array",
                    "description": "An array holding availability zones, this configures the availability zones the Ocean may launch instances in per VNG. Can be null.\n",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "us-central1-a",
                      "us-central1-b"
                    ]
                  },
                  "tags": {
                    "type": "array",
                    "description": "Every node launched from this VNG will have those tags. If the value is null, the nodes will have the tags configured at the cluster level.\n",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "gke-cluster-name-12345-node",
                      "network-tag-1"
                    ]
                  },
                  "taints": {
                    "type": "array",
                    "description": "Add taints to the virtual node group.",
                    "items": {
                      "type": "object",
                      "required": [
                        "key",
                        "value",
                        "effect"
                      ],
                      "properties": {
                        "key": {
                          "type": "string",
                          "description": "Set taint key."
                        },
                        "value": {
                          "type": "string",
                          "description": "Set taint value."
                        },
                        "effect": {
                          "type": "string",
                          "description": "Set taint effect."
                        }
                      }
                    },
                    "example": [
                      {
                        "key": "taintKey",
                        "value": "taintValue",
                        "effect": "NoSchedule"
                      }
                    ]
                  },
                  "labels": {
                    "type": "array",
                    "description": "An array of labels to add to the virtual node group. Only custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.",
                    "items": {
                      "type": "object",
                      "required": [
                        "key",
                        "value"
                      ],
                      "properties": {
                        "key": {
                          "type": "string",
                          "description": "Set label key.\\\nThe following are not allowed:\n* \"kubernetes.io/hostname\"\n* \"failure-domain.beta.kubernetes.io/zone\"\n* \"topology.kubernetes.io/zone\"\n* \"failure-domain.beta.kubernetes.io/region\"\n* \"topology.kubernetes.io/region\"\n* \"beta.kubernetes.io/instance-type\"\n* \"node.kubernetes.io/instance-type\"\n* \"beta.kubernetes.io/os\"\n* \"kubernetes.io/os\"\n* \"beta.kubernetes.io/arch\"\n* \"kubernetes.io/arch\"\n* \"spotinst.io/node-lifecycle\"\n* \"spotinst.io/gpu-type\"\n"
                        },
                        "value": {
                          "type": "string",
                          "description": "Set label value."
                        }
                      }
                    },
                    "example": [
                      {
                        "key": "env",
                        "value": "test"
                      }
                    ]
                  },
                  "autoScale": {
                    "type": "object",
                    "description": "Object specifying the automatic scaling of an Ocean VNG.\n",
                    "properties": {
                      "headrooms": {
                        "type": "array",
                        "description": "Set custom headroom per virtual node group. Provide a list of launchSpec.autoScale.headroom objects.\n",
                        "items": {
                          "type": "object",
                          "required": [
                            "numOfUnits"
                          ],
                          "properties": {
                            "cpuPerUnit": {
                              "type": "integer",
                              "description": "Configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n",
                              "example": 1000
                            },
                            "memoryPerUnit": {
                              "type": "integer",
                              "description": "Configure the amount of memory (MiB) to allocate the headroom.\n",
                              "example": 2048
                            },
                            "gpuPerUnit": {
                              "type": "integer",
                              "description": "The amount of GPU to allocate per headroom unit.\n",
                              "example": 0
                            },
                            "numOfUnits": {
                              "type": "integer",
                              "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                              "example": 3
                            }
                          }
                        }
                      },
                      "autoHeadroomPercentage": {
                        "type": "integer",
                        "description": "Number between 0-200 to control the headroom % of the specific Virtual Node Group. Effective when cluster.autoScaler.isAutoConfig=true is set on the Ocean cluster\n",
                        "example": 20
                      },
                      "down": {
                        "type": "object",
                        "description": "Autoscaling scale down operations.\n",
                        "properties": {
                          "maxScaleDownPercentage": {
                            "type": "number",
                            "format": "double",
                            "minimum": 0.1,
                            "maximum": 100,
                            "description": "The maximum percentage allowed to scale down in a single scaling action on the nodes running in a specific VNG. Allowed only if maxScaleDownPercentage is set to null at the cluster level.\n",
                            "example": 30
                          }
                        }
                      }
                    }
                  },
                  "resourceLimits": {
                    "type": "object",
                    "properties": {
                      "maxInstanceCount": {
                        "description": "Option to set a maximum number of instances per virtual node group. Can be null. If set, the value must be greater than or equal to 0.\n",
                        "type": "integer",
                        "example": 5
                      },
                      "minInstanceCount": {
                        "description": "Option to set a minimum number of instances per virtual node group.\\\nCan be null. If set, value must be greater than or equal to 0.\n",
                        "type": "integer",
                        "example": 2
                      }
                    }
                  },
                  "restrictScaleDown": {
                    "type": "boolean",
                    "description": "When set to True, VNG nodes will be treated as if all pods running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints).\nTherefore, Ocean will not scale nodes down unless they are empty.\n",
                    "example": false
                  },
                  "shieldedInstanceConfig": {
                    "type": "object",
                    "title": "shielded-instance-config",
                    "description": "The Ocean shielded instance configuration object.\n",
                    "properties": {
                      "enableSecureBoot": {
                        "type": "boolean",
                        "description": "Enable the secure boot parameter on the GCP instances.\n",
                        "example": true
                      },
                      "enableIntegrityMonitoring": {
                        "type": "boolean",
                        "description": "Enable the integrity monitoring parameter on the GCP instances.\n",
                        "example": true
                      }
                    }
                  },
                  "strategy": {
                    "type": "object",
                    "title": "strategy",
                    "description": "The Ocean virtual node group strategy object.\n",
                    "properties": {
                      "preemptiblePercentage": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 100,
                        "description": "The desired percentage of Spot/Preemptible instances out of all running instances for this VNG.\\\nOnly available when the field is **not** set in the cluster directly (cluster.strategy.preemptiblePercentage).\n",
                        "example": 80
                      },
                      "scalingOrientation": {
                        "type": "string",
                        "default": "BALANCED",
                        "description": "Set this value to control the approach that Ocean takes when launching nodes.\n",
                        "enum": [
                          "COST",
                          "AVAILABILITY",
                          "BALANCED"
                        ]
                      },
                      "shouldUtilizeCommitments": {
                        "type": "boolean",
                        "example": true,
                        "description": "Enable committed use discounts utilization.\n"
                      },
                      "revertToPreferred": {
                        "type": "object",
                        "description": "Allow the replacement of instances to Preferred ones if available.\n",
                        "properties": {
                          "shouldPerform": {
                            "type": "boolean",
                            "default": true,
                            "description": "If enabled, replacements will be performed for your VNG. TRUE is the default.\n"
                          },
                          "maxBatchPercentage": {
                            "type": "integer",
                            "minimum": 0,
                            "maximum": 100,
                            "default": 10,
                            "description": "Decide on the % of instances that will be replaced simultaneously.\n"
                          }
                        }
                      }
                    }
                  },
                  "storage": {
                    "type": "object",
                    "title": "storage",
                    "description": "The Ocean virtual node group storage object.\n",
                    "properties": {
                      "localSsdCount": {
                        "type": "integer",
                        "description": "Defines the number of local SSDs to be attached per node for this VNG.\n\nIf instanceTypes are configured in this VNG, **all of them** must support the value of localSsdCount.\nOtherwise, if the Ocean cluster has instanceTypes on a permit list, **at least one** must support the value of localSsdCount.\n\nFor more information about local SSDs, it is recommended to review the GCP documentation:\n* [GCP Local SSD](https://cloud.google.com/compute/docs/disks#localssds)\n* [Local SSDs and machine types](https://cloud.google.com/compute/docs/disks#local_ssd_machine_type_restrictions)\n* [GKE Using local SSDs](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/local-ssd#use)\n",
                        "example": 2
                      },
                      "localSsdEphemeralStorageCount": {
                        "type": "integer",
                        "description": "Defines the number of local SSDs to be used as ephemeral storage per node for this VNG.\n\nThis field is derived from nodes enabled with the `--ephemeral-storage-local-ssd` flag in GKE,\nwhich configures ephemeral storage (used for temporary data such as container images and writable layers)\nbacked by local SSDs instead of the boot disk.\n\n**All** instanceTypes configured in this VNG must support the value of localSsdEphemeralStorageCount.\nOtherwise, if the Ocean cluster has instanceTypes on a permit list, **at least one** must support the value of localSsdEphemeralStorageCount.\n\nFor more information about local SSDs with ephemeral storage, it is recommended to review the GCP documentation:\n* [GKE ephemeral storage backed by local SSDs](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/local-ssd#lssd-ephemeral-storage)\n",
                        "example": 2
                      },
                      "localNvmeSsdCount": {
                        "type": "integer",
                        "description": "Defines the number of local NVMe SSDs to be attached per node in raw block mode for this VNG.\n\nThis field is derived from nodes enabled with the `--local-nvme-ssd-block` flag in GKE,\nwhich attaches local NVMe SSDs as raw block devices, providing the highest possible storage performance.\n\n**All** instanceTypes configured in this VNG must support the value of localNvmeSsdCount.\nOtherwise, if the Ocean cluster has instanceTypes on a permit list, **at least one** must support the value of localNvmeSsdCount.\n\nFor more information about local NVMe SSDs, it is recommended to review the GCP documentation:\n* [GKE local NVMe SSD block storage](https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/local-ssd-raw)\n",
                        "example": 2
                      }
                    }
                  },
                  "scheduling": {
                    "type": "object",
                    "description": "An object used to define scheduled tasks such as a manual headroom update or a VNG-level shutdown window.\n",
                    "title": "Ocean Scheduling",
                    "properties": {
                      "shutdownHours": {
                        "type": "object",
                        "description": "An object used to specify times that the nodes in the virtual node group will be taken down.\n",
                        "required": [
                          "timeWindows"
                        ],
                        "properties": {
                          "isEnabled": {
                            "type": "boolean",
                            "description": "Flag to enable or disable the shutdown hours mechanism. When False, the mechanism is deactivated, and the virtual node group remains in its current state.\n",
                            "example": true
                          },
                          "timeWindows": {
                            "type": "array",
                            "description": "The times that the shutdown hours will apply.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "Mon:00:30-Mon:23:00",
                              "Tue:06:30-Tue:23:00"
                            ]
                          }
                        }
                      },
                      "tasks": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "title": "Task Definition",
                          "required": [
                            "isEnabled",
                            "cronExpression",
                            "taskType"
                          ],
                          "properties": {
                            "isEnabled": {
                              "type": "boolean",
                              "example": true,
                              "description": "Describes whether the task is enabled. When True, the task runs. When False, it does not run. Required for launchSpec.scheduling.tasks. In case automatic headroom is configured, please make sure to set autoScaler.enableAutomaticAndManualHeadroom on Ocean level to true in order to make sure that the manual headroom would be affective.\n"
                            },
                            "cronExpression": {
                              "type": "string",
                              "example": "0 1 * * *",
                              "description": "A valid cron expression. For example : \" * * * * * \". The cron job runs in UTC time and is in Unix cron format. (See the Cron Expression Validator Script.)\n"
                            },
                            "taskType": {
                              "type": "string",
                              "example": "manualHeadroomUpdate",
                              "enum": [
                                "manualHeadroomUpdate"
                              ],
                              "description": "The activity that you are scheduling. Valid values: \"manualHeadroomUpdate\". Required for launchSpec.scheduling.tasks.\n"
                            },
                            "config": {
                              "description": "The config of this scheduled task. Depends on the value of `taskType`.",
                              "oneOf": [
                                {
                                  "type": "object",
                                  "title": "manualHeadroomUpdate",
                                  "required": [
                                    "headrooms"
                                  ],
                                  "properties": {
                                    "headrooms": {
                                      "description": "Set custom headroom per VNG. Provide a list of launchSpec.autoscale.headroom objects.\n",
                                      "type": "array",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "cpuPerUnit": {
                                            "description": "Configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n",
                                            "type": "integer"
                                          },
                                          "memoryPerUnit": {
                                            "description": "Configure the amount of memory (MiB) to allocate the headroom.\n",
                                            "type": "integer"
                                          },
                                          "numOfUnits": {
                                            "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                            "type": "integer"
                                          },
                                          "gpuPerUnit": {
                                            "type": "integer",
                                            "description": "Amont of GPU to allocate for headroom unit.\n"
                                          }
                                        }
                                      },
                                      "example": [
                                        {
                                          "cpuPerUnit": 1024,
                                          "memoryPerUnit": 512,
                                          "gpuPerUnit": 0,
                                          "numOfUnits": 1
                                        }
                                      ]
                                    }
                                  }
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  },
                  "createdAt": {
                    "type": "string",
                    "readOnly": true,
                    "format": "date-time",
                    "example": "2019-06-03T08:13:08.000Z"
                  },
                  "updatedAt": {
                    "type": "string",
                    "readOnly": true,
                    "format": "date-time",
                    "example": "2019-06-10T15:06:13.000Z"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/launchSpec/ols-12345abc"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1%7BlaunchSpecId%7D/put/requestBody/content/application~1json/schema"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get VNG",
        "operationId": "OceanGKELaunchSpecGet",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/launchSpec/ols-12345abc"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec/post/requestBody/content/application~1json/schema/allOf/0/properties/launchSpec"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s:launchSpec"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/{oceanId}/roll": {
      "summary": "Ocean for GKE",
      "post": {
        "summary": "Initiate Roll",
        "description": "Roll an entire Ocean cluster or roll subsets of the cluster by specifying launchSpecIds or instanceNames. Performing this request will start the roll immediately, and the roll will take place according to defined batches. <br /> <br /> Note that the first response for a successful request will notify about the start of a roll. In order to check the status of a roll, you can use the GET Cluster Roll API using the roll identifier.\n",
        "operationId": "oceanGkeRollInit",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "Roll",
                    "properties": {
                      "roll": {
                        "allOf": [
                          {
                            "type": "object",
                            "properties": {
                              "batchSizePercentage": {
                                "type": "integer",
                                "description": "Value is a percentage to set the size of a batch in a roll. Valid values are 0-100.\n",
                                "example": 20
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "comment": {
                                "type": "string",
                                "description": "Add a comment description for the roll. The comment is limited to 256 chars.\n",
                                "example": "This is why I deployed my cluster."
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "respectPdb": {
                                "type": "boolean",
                                "description": "During the roll, if the parameter is set to 'true', PDB is honored during the instance replacement.\n",
                                "example": true,
                                "default": false
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "batchMinHealthyPercentage": {
                                "type": "integer",
                                "description": "Indicates the threshold percentage of minimum healthy instances in a single batch. If the number is below the threshold, the cluster roll will fail. The parameter value has a range of 1-100 (default = 50%).\n",
                                "example": 100,
                                "default": 50
                              }
                            }
                          }
                        ]
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "Roll with instance ids",
                    "properties": {
                      "roll": {
                        "allOf": [
                          {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/0"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/1"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/2"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/3"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "instanceIds": {
                                "type": "array",
                                "description": "List of instance identifiers to be rolled. Each identifier is a string. InstanceIds can be null, and cannot be used together with launchSpecIds.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "i-0003a99ffb566f039",
                                  "i-0567a99ffb566f765"
                                ]
                              }
                            }
                          }
                        ]
                      }
                    }
                  },
                  {
                    "type": "object",
                    "title": "Roll with Virtual Node Group ids",
                    "properties": {
                      "roll": {
                        "allOf": [
                          {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/0"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/1"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/2"
                          },
                          {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/properties/roll/allOf/3"
                          },
                          {
                            "type": "object",
                            "properties": {
                              "launchSpecIds": {
                                "type": "array",
                                "description": "List of virtual node group identifiers to be rolled. Each identifier is a string. LaunchSpecIds can be null, and cannot be used together with instanceIds.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "ols-76694a7d",
                                  "ols-56694a76"
                                ]
                              }
                            }
                          },
                          {
                            "type": "object",
                            "properties": {
                              "disableLaunchSpecAutoScaling": {
                                "type": "boolean",
                                "description": "When set to 'true' and virtual node group identifiers are defined to roll, the specified virtual node group(s) will be blocked from scaling up. Replacements will scale up in other virtual node groups that match the displaced pods instead. This applies to migrating nodes from one virtual node group to another.\n",
                                "example": true
                              }
                            }
                          }
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Cluster Roll Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "rollId": {
                      "type": "string",
                      "example": "roll-1234"
                    },
                    "oceanId": {
                      "type": "string",
                      "example": "o-12e31234"
                    },
                    "scope": {
                      "type": "string",
                      "enum": [
                        "Cluster",
                        "Vngs",
                        "Vng",
                        "Instances",
                        "Instance"
                      ],
                      "example": "Cluster"
                    },
                    "status": {
                      "type": "string",
                      "example": "IN_PROGRESS",
                      "enum": [
                        "IN_PROGRESS",
                        "COMPLETED",
                        "FAILED",
                        "STOPPED"
                      ]
                    },
                    "batchNumber": {
                      "type": "integer",
                      "example": 1
                    },
                    "numOfBatches": {
                      "type": "integer",
                      "example": 5
                    },
                    "comment": {
                      "type": "string",
                      "example": "This is why I deployed my cluster."
                    },
                    "respectPdb": {
                      "type": "boolean",
                      "example": true
                    },
                    "progress": {
                      "type": "object",
                      "properties": {
                        "unit": {
                          "type": "string",
                          "example": "percentage"
                        },
                        "value": {
                          "type": "integer",
                          "example": 0
                        },
                        "detailedStatus": {
                          "type": "object",
                          "properties": {
                            "oldInstances": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "instanceName": {
                                    "type": "string"
                                  },
                                  "status": {
                                    "type": "string"
                                  }
                                }
                              },
                              "example": [
                                {
                                  "instanceName": "sin-0a4becc0-sig-1234abcd",
                                  "status": "REPLACED"
                                },
                                {
                                  "instanceName": "sin-1a4becc0-sig-1234abcd",
                                  "status": "TO_BE_REPLACED"
                                },
                                {
                                  "instanceName": "sin-2a4becc0-sig-1234abcd",
                                  "status": "COULD_NOT_BE_REPLACED"
                                },
                                {
                                  "instanceName": "sin-3a4becc0-sig-1234abcd",
                                  "status": "NOT_REPLACED_DUE_TO_PDB"
                                }
                              ]
                            }
                          }
                        }
                      }
                    },
                    "instanceNames": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "sin-0a4becc0-sig-6952238d",
                        "sin-0542ecc0-sig-695223r4"
                      ]
                    },
                    "launchSpecIds": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "ols-76694a7d",
                        "ols-56694a76"
                      ]
                    },
                    "batchMinHealthyPercentage": {
                      "type": "integer",
                      "example": 100
                    },
                    "createdAt": {
                      "type": "string",
                      "example": "2019-03-24T15:46:09.000Z"
                    },
                    "updatedAt": {
                      "type": "string",
                      "example": "2019-03-24T15:46:09.000Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Rolls",
        "description": "Get status for all rolls of an Ocean cluster.\n",
        "operationId": "oceanGkeRollList",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "oceanId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "o-abcd1234",
            "description": "Identifier of the Ocean cluster.\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Get List Of Rolls Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "object",
                          "properties": {
                            "code": {
                              "type": "integer",
                              "example": 200
                            },
                            "message": {
                              "type": "string",
                              "example": "OK"
                            }
                          }
                        },
                        "kind": {
                          "type": "string",
                          "example": "spotinst:ocean:aws:k8s:cluster:roll"
                        },
                        "items": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "id": {
                                "type": "string",
                                "example": "scr-5aaf854e"
                              },
                              "scope": {
                                "type": "string",
                                "enum": [
                                  "Cluster",
                                  "Vngs",
                                  "Vng",
                                  "Instances",
                                  "Instance"
                                ],
                                "example": "Cluster"
                              },
                              "status": {
                                "type": "string",
                                "example": "IN_PROGRESS",
                                "enum": [
                                  "IN_PROGRESS",
                                  "COMPLETED",
                                  "FAILED",
                                  "STOPPED"
                                ]
                              },
                              "currentBatch": {
                                "type": "integer",
                                "example": 2
                              },
                              "numOfBatches": {
                                "type": "integer",
                                "example": 2
                              },
                              "comment": {
                                "type": "string",
                                "example": "This is why I deployed my cluster."
                              },
                              "progress": {
                                "type": "object",
                                "properties": {
                                  "unit": {
                                    "type": "string",
                                    "example": "percentage"
                                  },
                                  "value": {
                                    "type": "integer",
                                    "example": 0
                                  },
                                  "detailedStatus": {
                                    "type": "object",
                                    "properties": {
                                      "oldInstances": {
                                        "type": "array",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "instanceName": {
                                              "type": "string"
                                            },
                                            "status": {
                                              "type": "string"
                                            }
                                          }
                                        },
                                        "example": [
                                          {
                                            "instanceName": "sin-0a4becc0-sig-1234abcd",
                                            "status": "REPLACED"
                                          },
                                          {
                                            "instanceName": "sin-1a4becc0-sig-1234abcd",
                                            "status": "TO_BE_REPLACED"
                                          },
                                          {
                                            "instanceName": "sin-2a4becc0-sig-1234abcd",
                                            "status": "COULD_NOT_BE_REPLACED"
                                          },
                                          {
                                            "instanceName": "sin-3a4becc0-sig-1234abcd",
                                            "status": "NOT_REPLACED_DUE_TO_PDB"
                                          }
                                        ]
                                      }
                                    }
                                  }
                                }
                              },
                              "batchMinHealthyPercentage": {
                                "type": "integer",
                                "example": 100
                              },
                              "oceanId": {
                                "type": "string",
                                "example": "o-30681b13"
                              },
                              "launchSpecIds": {
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "example": [
                                    "ols-76694a7d",
                                    "ols-56694a76"
                                  ]
                                }
                              },
                              "respectPdb": {
                                "type": "boolean",
                                "example": true
                              },
                              "createdAt": {
                                "type": "string",
                                "example": "2019-03-24T15:46:09.000Z"
                              },
                              "updatedAt": {
                                "type": "string",
                                "example": "2019-03-24T15:46:09.000Z"
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/{oceanId}/roll/{rollId}": {
      "summary": "Ocean for GKE",
      "put": {
        "summary": "Update Roll",
        "description": "Update a roll of an Ocean cluster.\n\n*Performing the request will stop the next batch in a roll.*\n",
        "operationId": "oceanGkeRollUpdate",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll/get/parameters/1"
          },
          {
            "in": "path",
            "name": "rollId",
            "example": "scr-12345abc",
            "description": "Ocean Cluster Roll identifier\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "roll": {
                    "type": "object",
                    "required": [
                      "status"
                    ],
                    "description": "Object that specifies the parameters of a roll (also called a deployment).\n",
                    "properties": {
                      "status": {
                        "type": "string",
                        "enum": [
                          "STOPPED"
                        ],
                        "description": "Set status of a roll. Valid values: \"STOPPED\"\n",
                        "example": "STOPPED"
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Cluster Roll Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "rollId": {
                      "type": "string",
                      "example": "roll-1234"
                    },
                    "status": {
                      "type": "string",
                      "example": "STOPPED",
                      "enum": [
                        "STOPPED"
                      ]
                    },
                    "batchNumber": {
                      "type": "integer",
                      "example": 1
                    },
                    "numOfBatches": {
                      "type": "integer",
                      "example": 5
                    },
                    "scope": {
                      "type": "string",
                      "enum": [
                        "Cluster",
                        "Vngs",
                        "Vng",
                        "Instances",
                        "Instance"
                      ],
                      "example": "Cluster"
                    },
                    "progress": {
                      "type": "object",
                      "properties": {
                        "unit": {
                          "type": "string",
                          "example": "percentage"
                        },
                        "value": {
                          "type": "integer",
                          "example": 0
                        },
                        "detailedStatus": {
                          "type": "object",
                          "properties": {
                            "oldInstances": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "instanceName": {
                                    "type": "string"
                                  },
                                  "status": {
                                    "type": "string"
                                  }
                                }
                              },
                              "example": [
                                {
                                  "instanceName": "sin-0a4becc0-sig-1234abcd",
                                  "status": "REPLACED"
                                },
                                {
                                  "instanceName": "sin-1a4becc0-sig-1234abcd",
                                  "status": "TO_BE_REPLACED"
                                },
                                {
                                  "instanceName": "sin-2a4becc0-sig-1234abcd",
                                  "status": "COULD_NOT_BE_REPLACED"
                                },
                                {
                                  "instanceName": "sin-3a4becc0-sig-1234abcd",
                                  "status": "NOT_REPLACED_DUE_TO_PDB"
                                }
                              ]
                            }
                          }
                        }
                      }
                    },
                    "batchMinHealthyPercentage": {
                      "type": "integer",
                      "example": 100
                    },
                    "oceanId": {
                      "type": "string",
                      "example": "o-12e31234"
                    },
                    "respectPdb": {
                      "type": "boolean",
                      "example": true
                    },
                    "createdAt": {
                      "type": "string",
                      "example": "2019-03-24T15:46:09.000Z"
                    },
                    "updatedAt": {
                      "type": "string",
                      "example": "2019-03-24T15:46:09.000Z"
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Roll",
        "description": "Get status for roll of an Ocean cluster.\n",
        "operationId": "oceanGkeRollGetSingleRoll",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll~1%7BrollId%7D/put/parameters/2"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster~1%7BoceanId%7D~1roll/post/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/{oceanClusterId}/nodes": {
      "get": {
        "summary": "Get Cluster Nodes",
        "description": "Get nodes data of an Ocean cluster.\n",
        "operationId": "oceanGkeGetNodes",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1nodes/get/parameters/2"
          },
          {
            "in": "query",
            "name": "instanceName",
            "schema": {
              "type": "string"
            },
            "example": "sin-123",
            "description": "Get a specific node by instance name."
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean GKE Nodes Data Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/cluster/o-12345abc/nodes"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Ocean node data",
                                "description": "Node data of Ocean cluster.",
                                "properties": {
                                  "instanceName": {
                                    "type": "string",
                                    "example": "sin-123",
                                    "description": "The GCP instance name of this node.\n"
                                  },
                                  "instanceType": {
                                    "type": "string",
                                    "example": "n1-standard-2",
                                    "description": "The GCP instance type of this node.\n"
                                  },
                                  "availabilityZone": {
                                    "type": "string",
                                    "example": "us-central1-b",
                                    "description": "The GCP availability zone of this node.\n"
                                  },
                                  "launchSpecId": {
                                    "type": "string",
                                    "example": "ols-123",
                                    "description": "The node's Virtual Node Group id.\n"
                                  },
                                  "launchSpecName": {
                                    "type": "string",
                                    "example": "dev-launchSpec",
                                    "description": "The node's Virtual Node Group name.\n"
                                  },
                                  "lifeCycle": {
                                    "type": "string",
                                    "enum": [
                                      "Preemtible",
                                      "OD",
                                      "Spot"
                                    ],
                                    "example": "Preemtible",
                                    "description": "The GCP lifeCycle of this node.\n"
                                  },
                                  "publicIp": {
                                    "type": "string",
                                    "example": "1.2.3.4",
                                    "description": "This node's public ip.\n"
                                  },
                                  "workloadRequestedMilliCpu": {
                                    "type": "number",
                                    "format": "double",
                                    "example": 1320,
                                    "description": "The amount of milli cpus requested by the kubernetes workload.\n"
                                  },
                                  "workloadRequestedMemoryInMiB": {
                                    "type": "number",
                                    "example": 500,
                                    "description": "The amount of memory in MiB requested by the kubernetes workload.\n"
                                  },
                                  "workloadRequestedGpu": {
                                    "type": "number",
                                    "example": 1,
                                    "description": "The amount of gpus requested by the kubernetes workload.\n"
                                  },
                                  "headroomRequestedMilliCpu": {
                                    "type": "number",
                                    "example": 1320,
                                    "description": "The amount of milli cpus saved for headroom.\n"
                                  },
                                  "headroomRequestedMemoryInMiB": {
                                    "type": "number",
                                    "example": 512,
                                    "description": "The amount of memory in MiB saved for headroom.\n"
                                  },
                                  "headroomRequestedGpu": {
                                    "type": "number",
                                    "example": 1,
                                    "description": "The amount of gpus saved for headroom.\n"
                                  },
                                  "allocatableMilliCpu": {
                                    "type": "number",
                                    "example": 2000,
                                    "description": "The amount of allocatable milli cpus as registered in kubernetes.\n"
                                  },
                                  "allocatableMemoryInMiB": {
                                    "type": "number",
                                    "example": 3646.1,
                                    "description": "The amount of allocatable memory in MiB as registered in kubernetes.\n"
                                  },
                                  "allocatableGpu": {
                                    "type": "number",
                                    "example": 1,
                                    "description": "The amount of allocatable gpus as registered in kubernetes.\n"
                                  },
                                  "nodeName": {
                                    "type": "string",
                                    "example": "node-1",
                                    "description": "The kubernetes node name.\n"
                                  },
                                  "registrationStatus": {
                                    "type": "string",
                                    "enum": [
                                      "Registered",
                                      "Registering",
                                      "Failed"
                                    ],
                                    "example": "Registered",
                                    "description": "The registration status of this node.\n"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2021-10-1T05:51:06.000Z",
                                    "description": "When was this node's instance was created at.\n"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s:nodes"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/import": {
      "post": {
        "summary": "Upgrade Elastigroup To Ocean",
        "description": "\n**Prerequisites** | Perform the following validations prior to upgrade executions: | * Group identifier cannot be null. * Group identifier exists in Elastigroup. * Group should be a GKE Elastigroup with defined scaling policy. * Group identifier is already managed by Ocean.\n",
        "operationId": "oceanGkeUpgradeElastigroup",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1import/post/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "request": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "example": "e1aba6b3-d1be-419f-b19a-9542e09716a5"
                        },
                        "url": {
                          "type": "string",
                          "example": "/ocean/gcp/k8s/cluster/import?groupId=o-210e0c0b?accountId=act-7461862f"
                        },
                        "method": {
                          "type": "string",
                          "example": "GET"
                        },
                        "timestamp": {
                          "type": "string",
                          "example": "2019-03-05T15:43:16.306Z"
                        }
                      }
                    },
                    "response": {
                      "type": "object",
                      "properties": {
                        "status": {
                          "type": "object",
                          "properties": {
                            "code": {
                              "type": "integer",
                              "example": 200
                            },
                            "message": {
                              "type": "string",
                              "example": "OK"
                            }
                          }
                        },
                        "kind": {
                          "type": "string",
                          "example": "spotinst:ocean:gcp:k8s"
                        },
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "o-9aa80ccb"
                            },
                            "name": {
                              "type": "string",
                              "example": "ocean test"
                            },
                            "controllerClusterId": {
                              "type": "string",
                              "example": "Test-5837c8ad1"
                            },
                            "gke": {
                              "type": "object",
                              "properties": {
                                "clusterName": {
                                  "type": "string",
                                  "example": "test-native-vpc"
                                },
                                "masterLocation": {
                                  "type": "string",
                                  "example": "us-central1-a"
                                }
                              }
                            },
                            "capacity": {
                              "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/capacity"
                            },
                            "compute": {
                              "type": "object",
                              "properties": {
                                "networkInterfaces": {
                                  "type": "object",
                                  "description": "Settings for network interfaces.\n",
                                  "properties": {
                                    "network": {
                                      "type": "string",
                                      "example": "default"
                                    },
                                    "accessConfigs": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "example": "external-nat"
                                        },
                                        "type": {
                                          "type": "string",
                                          "description": "Possible values: ONE_TO_ONE_NAT\n",
                                          "example": "ONE_TO_ONE_NAT"
                                        }
                                      }
                                    },
                                    "aliasIpRanges": {
                                      "type": "object",
                                      "properties": {
                                        "ipCidrRange": {
                                          "type": "string",
                                          "description": "Required for the cluster.compute.networkInterfaces.aliasIpRanges object.\n",
                                          "example": "/24"
                                        },
                                        "subnetworkRangeName": {
                                          "type": "string",
                                          "description": "Required for the cluster.compute.networkInterfaces.aliasIpRanges object.\n",
                                          "example": "gke-test-native-vpc-pods-5cb557f7"
                                        }
                                      }
                                    }
                                  }
                                },
                                "subnetName": {
                                  "type": "string",
                                  "description": "Subnet identifier for the Ocean cluster.",
                                  "example": "default"
                                },
                                "instanceTypes": {
                                  "type": "object",
                                  "description": "The type of instances that may or may not be a part of the Ocean cluster.",
                                  "properties": {
                                    "whitelist": {
                                      "type": "array",
                                      "items": {
                                        "type": "string"
                                      },
                                      "description": "Instance types allowed in the Ocean cluster.\n",
                                      "example": [
                                        "n1-standard-2"
                                      ]
                                    }
                                  }
                                },
                                "launchSpecification": {
                                  "type": "object",
                                  "properties": {
                                    "sourceImage": {
                                      "type": "string",
                                      "description": "URL of the image used to launch the instances.",
                                      "example": "https://www.googleapis.com/compute/v1/projects/gke-node-images/global/images/gke-1117-gke12-cos-69-10895-138-0-v190225-pre"
                                    },
                                    "metadata": {
                                      "type": "object",
                                      "description": "Set array of cluster metadata.\n",
                                      "properties": {
                                        "key": {
                                          "type": "string",
                                          "description": "Key of metadata key-pair.\n",
                                          "example": "example_key1"
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "Value of metadata key-pair.\n",
                                          "example": "exmample_value1"
                                        }
                                      }
                                    },
                                    "tags": {
                                      "type": "array",
                                      "description": "Every node launched from this configuration will be tagged with those tags.",
                                      "items": {
                                        "type": "string"
                                      },
                                      "example": [
                                        "gke-cluster-name-12345-node"
                                      ]
                                    },
                                    "ipForwarding": {
                                      "type": "boolean",
                                      "example": true
                                    },
                                    "serviceAccount": {
                                      "type": "string",
                                      "example": "265168459660-compute@developer.gserviceaccount.com"
                                    },
                                    "labels": {
                                      "type": "array",
                                      "description": "Set labels on cluster. You can set up to 60 labels.\n",
                                      "items": {
                                        "type": "object",
                                        "properties": {
                                          "key": {
                                            "type": "string",
                                            "example": "spotinst-gke-original-node-pool"
                                          },
                                          "value": {
                                            "type": "string",
                                            "example": "test-native-vpc__default-pool"
                                          }
                                        }
                                      }
                                    },
                                    "rootVolumeSizeInGb": {
                                      "type": "integer",
                                      "description": "Optionally set root size (GB). Value should be greater than or equal to 100.",
                                      "example": 100
                                    }
                                  }
                                },
                                "availabilityZones": {
                                  "type": "array",
                                  "items": {
                                    "type": "string",
                                    "example": [
                                      "us-central1-a"
                                    ]
                                  }
                                }
                              }
                            },
                            "createdAt": {
                              "type": "string",
                              "example": "2018-11-05T12:55:50.000+0000"
                            },
                            "updatedAt": {
                              "type": "string",
                              "example": "2018-11-05T12:58:15.000+0000"
                            }
                          }
                        },
                        "count": {
                          "type": "integer",
                          "example": 1
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/cluster/gke/import": {
      "summary": "Ocean for GKE",
      "post": {
        "summary": "Import GKE Cluster To Ocean",
        "description": "Returns an Ocean Cluster configuration, and optionally Virtual Node Group (VNG) configurations based on a given GKE Cluster and its Node Pools.\\\nThe returned values (\"Imported Cluster/VNGs\") can then be used as inputs to the Create Cluster/VNG APIs in order to create the respectful resources.\n",
        "operationId": "oceanGkeImportGkeToOcean",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "location",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "us-central1-a",
            "description": "Location GKE Cluster Master.\n"
          },
          {
            "in": "query",
            "name": "clusterName",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "test-gke",
            "description": "Name of the GKE Cluster.\n"
          },
          {
            "in": "query",
            "name": "nodePoolName",
            "schema": {
              "type": "string"
            },
            "example": "test",
            "description": "Name of the Node Pool to use as a default for the Cluster configuration.\n"
          },
          {
            "in": "query",
            "name": "includeLaunchSpecs",
            "example": true,
            "description": "When set to \"true\", GKE cluster node pools will be imported to Ocean custom VNG (\"customLaunchSpec\") configurations.\n",
            "schema": {
              "type": "boolean",
              "default": true
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "cluster"
                    ],
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "description": "The specification of the Ocean cluster.",
                        "required": [
                          "compute"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "test",
                            "description": "Add a name for the Ocean cluster.\n"
                          },
                          "controllerClusterId": {
                            "type": "string",
                            "example": "test-123124",
                            "description": "Enter the Ocean cluster identifier.\n"
                          },
                          "capacity": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/capacity"
                          },
                          "instanceTypes": {
                            "type": "object",
                            "description": "The type of instances that may or may not be a part of the Ocean cluster.",
                            "properties": {
                              "whitelist": {
                                "type": "array",
                                "description": "Instance types allowed in the Ocean cluster. Cannot be configured if a deny list is configured.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "n1-standard-2"
                                ]
                              },
                              "blacklist": {
                                "type": "array",
                                "description": "Instance types to avoid launching in the Ocean cluster. Cannot be configured if a permit list is configured.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "n2d-highcpu-96"
                                ]
                              }
                            }
                          },
                          "autoScaler": {
                            "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/autoScaler"
                          },
                          "availabilityZones": {
                            "type": "array",
                            "description": "An array holding availability zones, this configures the availability zones the Ocean may launch instances in per VNG. Can be null.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "us-central1-a",
                              "us-central1-b"
                            ]
                          },
                          "backendServices": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "backendServiceName"
                              ],
                              "properties": {
                                "backendServiceName": {
                                  "type": "string",
                                  "example": "bserv-2"
                                },
                                "locationType": {
                                  "type": "string",
                                  "enum": [
                                    "regional",
                                    "global"
                                  ],
                                  "example": "regional"
                                },
                                "scheme": {
                                  "type": "string",
                                  "description": "Required if locationType is set to \"regional\".\n",
                                  "enum": [
                                    "EXTERNAL",
                                    "INTERNAL"
                                  ],
                                  "example": "EXTERNAL"
                                },
                                "namedPorts": {
                                  "type": "object",
                                  "required": [
                                    "name",
                                    "ports"
                                  ],
                                  "properties": {
                                    "name": {
                                      "type": "string",
                                      "example": "https"
                                    },
                                    "ports": {
                                      "type": "array",
                                      "items": {
                                        "type": "integer"
                                      },
                                      "example": [
                                        443,
                                        8443
                                      ]
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean CKE Cluster Import Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/cluster/gke/import"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "cluster": {
                                    "type": "object",
                                    "description": "The specification of the Ocean cluster.",
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "example": "test",
                                        "description": "Add a name for the Ocean cluster.\n"
                                      },
                                      "controllerClusterId": {
                                        "type": "string",
                                        "example": "test-123124",
                                        "description": "Enter the Ocean cluster identifier.\n"
                                      },
                                      "gke": {
                                        "type": "object",
                                        "required": [
                                          "clusterName",
                                          "masterLocation"
                                        ],
                                        "description": "Use existing GKE cluster.\n",
                                        "properties": {
                                          "clusterName": {
                                            "type": "string",
                                            "description": "Required for the cluster.gke object.\n",
                                            "example": "test-cluster"
                                          },
                                          "masterLocation": {
                                            "type": "string",
                                            "description": "Required for the cluster.gke object.\n",
                                            "example": "us-central1-a"
                                          }
                                        }
                                      },
                                      "autoScaler": {
                                        "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/autoScaler"
                                      },
                                      "autoUpdate": {
                                        "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/autoUpdate"
                                      },
                                      "capacity": {
                                        "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/capacity"
                                      },
                                      "compute": {
                                        "$ref": "#/paths/~1ocean~1gcp~1k8s~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/compute"
                                      }
                                    }
                                  },
                                  "customLaunchSpecs": {
                                    "type": "array",
                                    "items": {
                                      "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec~1import/post/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/gcp/k8s/launchSpec/{launchSpecId}/launchNodes": {
      "put": {
        "summary": "Launch Nodes In VNG",
        "description": "Launch nodes in virtual node group.\n",
        "operationId": "oceanGkeLaunchSpecLaunchNodes",
        "tags": [
          "Ocean GKE"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "launchRequest": {
                        "type": "object",
                        "title": "Ocean GKE Virtual Node Group Launch Request",
                        "required": [
                          "amount"
                        ],
                        "properties": {
                          "amount": {
                            "description": "The number of nodes to launch.\n",
                            "type": "integer",
                            "example": 5
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Launch Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/gcp/k8s/launchSpec/ols-12345abc/launchNodes"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "launchSpecId": {
                              "type": "string",
                              "example": "ols-f73821bc"
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "newInstances": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "instanceName": {
                                          "type": "string",
                                          "example": "sin-00b61aa5dde4-oesg-97499562",
                                          "description": "Name of the node launched.\n"
                                        },
                                        "availabilityZone": {
                                          "type": "string",
                                          "example": "us-west-2b",
                                          "description": "The availability zone the node is launched in.\n"
                                        },
                                        "instanceType": {
                                          "type": "string",
                                          "example": "c3.xlarge",
                                          "description": "Type of the launched node.\n"
                                        },
                                        "lifeCycle": {
                                          "type": "string",
                                          "example": "Preemptible",
                                          "description": "Preemptible or On Demand.\n"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:gcp:k8s:launchSpec:launchNodes"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster": {
      "summary": "Ocean for AKS",
      "post": {
        "summary": "Create Cluster",
        "description": "Creates an Ocean entity according to a given specification.\n\n<p>Notes:<br></p>\n\nIt is recommended to import all necessary information from the existing AKS cluster using the Ocean [AKS Cluster Import](https://spec.dev.spot.io/#operation/oceanAKSClusterImport) API call and use its output to create a fully configured Ocean cluster.\n\n<p>The Ocean Controller is used to monitor the cluster resources and report back to Ocean SaaS. <b>A properly functioning controller is mandatory for Ocean to operate.</b>\n\nInstalling the controller can be easily done by Helm, Terraform or a script using the [guide](https://docs.flexera.com/spot/ocean/tutorials/spot-kubernetes-controller/ocean-controller-two-install?id=new-clusters-install-the-ocean-controller-version-2).</p>\n",
        "operationId": "oceanAKSClusterCreate",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "cluster"
                    ],
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "description": "The Ocean cluster.\n",
                        "required": [
                          "name",
                          "controllerClusterId",
                          "aks",
                          "virtualNodeGroupTemplate"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "readOnly": true,
                            "example": "o-134abcd",
                            "description": "Ocean cluster identifier.\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "test",
                            "description": "Add a name for the Ocean cluster.\n"
                          },
                          "controllerClusterId": {
                            "type": "string",
                            "example": "test-123124",
                            "description": "Enter a unique Ocean cluster identifier. Cannot be updated.\n"
                          },
                          "aks": {
                            "type": "object",
                            "title": "Ocean AKS - AKS Cluster Configuration",
                            "required": [
                              "clusterName",
                              "resourceGroupName",
                              "region",
                              "infrastructureResourceGroupName"
                            ],
                            "description": "AKS cluster configuration. Cannot be updated.\n",
                            "properties": {
                              "clusterName": {
                                "type": "string",
                                "description": "The name  of the AKS Cluster.\n",
                                "example": "test-cluster"
                              },
                              "resourceGroupName": {
                                "type": "string",
                                "description": "The name of the cluster's resource group.\n",
                                "example": "TestResourceGroup"
                              },
                              "region": {
                                "type": "string",
                                "description": "The cluster's region.\n",
                                "example": "eastus"
                              },
                              "infrastructureResourceGroupName": {
                                "type": "string",
                                "description": "The name of the cluster's infrastructure resource group.\n",
                                "example": "MC_TestResourceGroup_test-cluster_eastus"
                              }
                            }
                          },
                          "autoScaler": {
                            "type": "object",
                            "title": "Ocean AKS Autoscaler",
                            "description": "The Ocean Kubernetes Autoscaler object.\n",
                            "properties": {
                              "isEnabled": {
                                "type": "boolean",
                                "description": "Enable the Ocean Kubernetes Autoscaler.\n",
                                "example": true
                              },
                              "resourceLimits": {
                                "type": "object",
                                "description": "Optionally set upper and lower bounds on the resource usage of the cluster.\n",
                                "properties": {
                                  "maxVCpu": {
                                    "type": "integer",
                                    "description": "The maximum cpu in vCpu units that can be allocated to the cluster.\n",
                                    "example": 750
                                  },
                                  "maxMemoryGib": {
                                    "type": "integer",
                                    "description": "The maximum memory in GiB units that can be allocated to the cluster.\n",
                                    "example": 1500
                                  }
                                }
                              },
                              "down": {
                                "type": "object",
                                "description": "Autoscaling scale down operations.\n",
                                "properties": {
                                  "maxScaleDownPercentage": {
                                    "type": "number",
                                    "format": "double",
                                    "minimum": 1,
                                    "maximum": 100,
                                    "description": "The maximum percentage allowed to scale down in a single scaling action.",
                                    "example": 30
                                  }
                                }
                              },
                              "enableAutomaticAndManualHeadroom": {
                                "type": "boolean",
                                "description": "Enable mixed mode for manual and automatic headroom.\nRelevant only when `headroom.automatic.isEnabled` is set to true.\nIf false, Ocean manages headroom automatically without combining with manual VNG headrooms.\n",
                                "example": true
                              },
                              "headroom": {
                                "type": "object",
                                "description": "Spare resource capacity management enabling fast assignment of pods without waiting for new resources to launch.\n",
                                "properties": {
                                  "automatic": {
                                    "type": "object",
                                    "description": "Automatic headroom configuration.\n",
                                    "properties": {
                                      "isEnabled": {
                                        "type": "boolean",
                                        "description": "Enable automatic headroom. When set to True, Ocean configures and optimizes headroom automatically.\n"
                                      },
                                      "percentage": {
                                        "type": "integer",
                                        "description": "Optionally set a number between 0-200 to control the percentage of total cluster resources dedicated to headroom.\n",
                                        "example": 5,
                                        "minimum": 0,
                                        "maximum": 200
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "scheduling": {
                            "type": "object",
                            "description": "An object used to specify times when the cluster will turn off. Once the shutdown time will be over, the cluster will return to its previous state.\n",
                            "title": "Ocean AKS Scheduling",
                            "properties": {
                              "shutdownHours": {
                                "type": "object",
                                "description": "An object used to specify times that the nodes in the cluster will be taken down.\n",
                                "title": "Shutdown Hours",
                                "properties": {
                                  "timeWindows": {
                                    "type": "array",
                                    "description": "The times that the shutdown hours will apply. Required if isEnabled is true.\n",
                                    "items": {
                                      "type": "string",
                                      "example": "Sat:08:00-Sun:08:00"
                                    }
                                  },
                                  "isEnabled": {
                                    "type": "boolean",
                                    "example": true,
                                    "description": "Flag to enable or disable the shutdown hours mechanism. When False, the mechanism is deactivated, and the cluster remains in its current state.\n"
                                  }
                                }
                              },
                              "tasks": {
                                "type": "array",
                                "description": "A list of scheduling tasks to preform on the cluster at a specific cron time.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "isEnabled",
                                    "cronExpression",
                                    "taskType"
                                  ],
                                  "properties": {
                                    "isEnabled": {
                                      "type": "boolean",
                                      "description": "Flag to enable or disable the scheduling task.\n"
                                    },
                                    "cronExpression": {
                                      "type": "string",
                                      "description": "A valid cron expression. The cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.\n",
                                      "example": "0 1 * * *"
                                    },
                                    "taskType": {
                                      "type": "string",
                                      "description": "The type of the scheduling task.\n",
                                      "enum": [
                                        "clusterRoll",
                                        "autoUpgradeVersion"
                                      ],
                                      "example": "clusterRoll"
                                    },
                                    "parameters": {
                                      "type": "object",
                                      "description": "The parameters of the scheduling task. Each task type will have properties relevant only to it.\n",
                                      "oneOf": [
                                        {
                                          "type": "object",
                                          "description": "The parameters of the cluster roll scheduling task.\n",
                                          "title": "Cluster Roll",
                                          "properties": {
                                            "batchSizePercentage": {
                                              "type": "integer",
                                              "minimum": 1,
                                              "maximum": 100,
                                              "description": "The percentage of the cluster that will be rolled at each batch.\n",
                                              "example": 20
                                            },
                                            "comment": {
                                              "type": "string",
                                              "description": "A comment to be added to the cluster roll.\n",
                                              "example": "Scheduled cluster roll"
                                            },
                                            "respectPdb": {
                                              "type": "boolean",
                                              "description": "During the roll, if the parameter is set to true we honor PDB during the instance replacement.\n",
                                              "example": true
                                            },
                                            "respectRestrictScaleDown": {
                                              "type": "boolean",
                                              "description": "During the roll, if the parameter is set to true we honor Restrict Scale Down label during the nodes replacement.\n",
                                              "example": true
                                            },
                                            "batchMinHealthyPercentage": {
                                              "type": "integer",
                                              "minimum": 1,
                                              "maximum": 100,
                                              "description": "The minimum percentage of the scaled nodes that should be healthy at each batch.\n",
                                              "example": 80
                                            },
                                            "vngIds": {
                                              "type": "array",
                                              "description": "List of Virtual Node Group IDs to be rolled. If not set or set to null, cluster roll will be applied.\n",
                                              "example": [
                                                "vng-123456"
                                              ],
                                              "items": {
                                                "type": "string"
                                              }
                                            }
                                          }
                                        },
                                        {
                                          "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1autoUpgrade/post/requestBody/content/application~1json/schema/allOf/0/properties/upgradeConfig"
                                        }
                                      ]
                                    }
                                  }
                                }
                              },
                              "suspensionHours": {
                                "type": "object",
                                "description": "An object used to specify times that the cluster should be exempted from Ocean's scaling-down activities to ensure uninterrupted operations during critical periods.\n",
                                "title": "Suspension Hours",
                                "properties": {
                                  "timeWindows": {
                                    "type": "array",
                                    "description": "The times that the suspension hours will apply. Required if isEnabled is true.\n",
                                    "items": {
                                      "type": "string",
                                      "example": "Sat:08:00-Sun:08:00"
                                    }
                                  },
                                  "isEnabled": {
                                    "type": "boolean",
                                    "example": true,
                                    "description": "Flag to enable or disable the suspension hours mechanism. When False, the mechanism is deactivated, and the cluster remains in its current state.\n"
                                  }
                                }
                              }
                            }
                          },
                          "logging": {
                            "type": "object",
                            "title": "Ocean AKS Logging",
                            "description": "The Ocean AKS Logging object.",
                            "required": [
                              "export"
                            ],
                            "properties": {
                              "export": {
                                "type": "object",
                                "title": "The Ocean AKS Logging Export",
                                "description": "The Ocean AKS Logging Export object.",
                                "required": [
                                  "azureBlob"
                                ],
                                "properties": {
                                  "azureBlob": {
                                    "type": "object",
                                    "title": "The Ocean AKS Logging Azure Blob Export",
                                    "description": "Exports your cluster's logs to the storage account and container configured on the storage account [data integration](https://docs.flexera.com/spot/ocean/features/log-integration-with-azure-blob?id=log-integration-with-azure-blob) given.\nEach file contains logs of 3 minutes where each log is separated by a new line and saved as a JSON.\nThe file formats are `container`/`accountId`_`oceanId`_`oceanName`_`startTime`.log\n",
                                    "required": [
                                      "id"
                                    ],
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "description": "The identifier of The Azure Blob data integration to export the logs to.",
                                        "example": "di-123"
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          },
                          "health": {
                            "type": "object",
                            "title": "Ocean AKS Health",
                            "description": "The Ocean AKS Health object.\n",
                            "properties": {
                              "shouldReplaceUnhealthyInstances": {
                                "type": "boolean",
                                "example": false,
                                "default": false,
                                "description": "'Indicates whether Ocean automatically replaces nodes that remain in a NotReady or Unschedulable state. When false, unhealthy nodes are detected but not replaced. When true, unhealthy nodes are automatically replaced.\n"
                              },
                              "gracePeriod": {
                                "type": "integer",
                                "example": 120,
                                "default": 120,
                                "minimum": 60,
                                "description": "The amount of time, in seconds, from the moment the node is registered and observed by Ocean until health checks for replacement purposes begin. Defines a grace period during which health checks are suppressed for newly observed nodes.\n"
                              },
                              "healthCheckUnhealthyDurationBeforeReplacement": {
                                "type": "integer",
                                "example": 180,
                                "default": 180,
                                "minimum": 120,
                                "maximum": 3600,
                                "description": "The amount of time, in seconds, a node is allowed to remain unhealthy after the grace period has elapsed before Ocean automatically replaces it.\n"
                              }
                            }
                          },
                          "virtualNodeGroupTemplate": {
                            "type": "object",
                            "title": "Ocean AKS Virtual Node Group Template",
                            "required": [
                              "availabilityZones"
                            ],
                            "properties": {
                              "availabilityZones": {
                                "type": "array",
                                "description": "An Array holding Availability Zones, this configures the availability zones the Ocean may launch nodes in per VNG.\\\nSelect zone 0 if you have a workload that requires no availability zone redundancy (AZ=null). You can select this option either alone or together with other availability zones.\\\nIn case zone 0 is selected together with other availability zones, nodes of zone 0 will be scaled only for workloads that demand it.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "0",
                                  "1",
                                  "2",
                                  "3"
                                ]
                              },
                              "nodePoolProperties": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup/post/requestBody/content/application~1json/schema/allOf/0/properties/virtualNodeGroup/properties/nodePoolProperties"
                              },
                              "nodeCountLimits": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/nodeCountLimits"
                              },
                              "strategy": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/strategy"
                              },
                              "autoScale": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/autoScale"
                              },
                              "labels": {
                                "type": "object",
                                "description": "key-value pairs of labels to add to the virtual node group.\\\nOnly custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.\\\nThe following are not allowed:\n* \"kubernetes.azure.com/agentpool\"\n* \"kubernetes.io/arch\"* \"kubernetes.io/os\"\n* \"node.kubernetes.io/instance-type\"\n* \"topology.kubernetes.io/region\"\n* \"topology.kubernetes.io/zone\"\n* \"kubernetes.azure.com/cluster\"\n* \"kubernetes.azure.com/mode\"\n* \"kubernetes.azure.com/role\"\n* \"kubernetes.azure.com/scalesetpriority\"\n* \"kubernetes.io/hostname\"\n* \"kubernetes.azure.com/storageprofile\"\n* \"kubernetes.azure.com/storagetier\"\n* \"kubernetes.azure.com/instance-sku\"\n* \"kubernetes.azure.com/node-image-version\"\n* \"kubernetes.azure.com/subnet\"\n* \"kubernetes.azure.com/vnet\"\n* \"kubernetes.azure.com/ppg\"\n* \"kubernetes.azure.com/encrypted-set\"\n* \"kubernetes.azure.com/accelerator\"\n* \"kubernetes.azure.com/fips_enabled\"\n* \"kubernetes.azure.com/os-sku\"\n",
                                "example": {
                                  "key": "value"
                                }
                              },
                              "taints": {
                                "type": "array",
                                "description": "Add taints to a virtual node group.\n",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "key": {
                                      "type": "string",
                                      "description": "Set taint key.\nThe following are not allowed:\n* \"kubernetes.azure.com/scalesetpriority\"\n"
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "Set taint value.\n"
                                    },
                                    "effect": {
                                      "type": "string",
                                      "description": "Set taint effect.\n",
                                      "enum": [
                                        "NoSchedule",
                                        "PreferNoSchedule",
                                        "NoExecute",
                                        "PreferNoExecute"
                                      ]
                                    }
                                  }
                                },
                                "example": [
                                  {
                                    "key": "taintKey",
                                    "value": "taintValue",
                                    "effect": "NoSchedule"
                                  }
                                ]
                              },
                              "tags": {
                                "type": "object",
                                "description": "A maximum of 20 unique key-value pairs for VM tags in the virtual node group.\nNote: Azure has a tag limit of 50 per node pool.\n"
                              },
                              "vmSizes": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/vmSizes"
                              },
                              "scheduling": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/scheduling"
                              },
                              "restrictScaleDown": {
                                "type": "boolean",
                                "description": "When set to True, VNG nodes will be treated as if all pods running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints).\nTherefore, Ocean will not scale nodes down unless they are empty.\n",
                                "example": false
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean AKS Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1cluster/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Clusters",
        "description": "List the configurations for all Ocean clusters in the specified account.\n",
        "operationId": "oceanAKSClusterList",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AKS Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "The Ocean cluster.\n",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "readOnly": true,
                                    "example": "o-134abcd",
                                    "description": "Ocean cluster identifier.\n"
                                  },
                                  "name": {
                                    "type": "string",
                                    "example": "test",
                                    "description": "Add a name for the Ocean cluster.\n"
                                  },
                                  "controllerClusterId": {
                                    "type": "string",
                                    "example": "test-123124",
                                    "description": "Enter a unique Ocean cluster identifier. Cannot be updated.\n"
                                  },
                                  "aks": {
                                    "type": "object",
                                    "title": "Ocean AKS - AKS Cluster Configuration",
                                    "required": [
                                      "clusterName",
                                      "resourceGroupName",
                                      "region",
                                      "infrastructureResourceGroupName"
                                    ],
                                    "description": "AKS cluster configuration. Cannot be updated.\n",
                                    "properties": {
                                      "clusterName": {
                                        "type": "string",
                                        "description": "The name  of the AKS Cluster.\n",
                                        "example": "test-cluster"
                                      },
                                      "resourceGroupName": {
                                        "type": "string",
                                        "description": "The name of the cluster's resource group.\n",
                                        "example": "TestResourceGroup"
                                      },
                                      "region": {
                                        "type": "string",
                                        "description": "The cluster's region.\n",
                                        "example": "eastus"
                                      },
                                      "infrastructureResourceGroupName": {
                                        "type": "string",
                                        "description": "The name of the cluster's infrastructure resource group.\n",
                                        "example": "MC_TestResourceGroup_test-cluster_eastus"
                                      }
                                    }
                                  },
                                  "autoScaler": {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/autoScaler"
                                  },
                                  "scheduling": {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/scheduling"
                                  },
                                  "logging": {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/logging"
                                  },
                                  "health": {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/health"
                                  },
                                  "virtualNodeGroupTemplate": {
                                    "type": "object",
                                    "title": "Ocean AKS Virtual Node Group Template",
                                    "properties": {
                                      "availabilityZones": {
                                        "type": "array",
                                        "description": "An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n",
                                        "items": {
                                          "type": "string"
                                        },
                                        "example": [
                                          "1",
                                          "2",
                                          "3"
                                        ]
                                      },
                                      "nodePoolProperties": {
                                        "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup/post/requestBody/content/application~1json/schema/allOf/0/properties/virtualNodeGroup/properties/nodePoolProperties"
                                      },
                                      "nodeCountLimits": {
                                        "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/nodeCountLimits"
                                      },
                                      "strategy": {
                                        "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/strategy"
                                      },
                                      "autoScale": {
                                        "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/autoScale"
                                      },
                                      "labels": {
                                        "type": "object",
                                        "description": "key-value pairs of labels to add to the virtual node group.\\\nOnly custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.\\\nThe following are not allowed:\n* \"kubernetes.azure.com/agentpool\"\n* \"kubernetes.io/arch\"* \"kubernetes.io/os\"\n* \"node.kubernetes.io/instance-type\"\n* \"topology.kubernetes.io/region\"\n* \"topology.kubernetes.io/zone\"\n* \"kubernetes.azure.com/cluster\"\n* \"kubernetes.azure.com/mode\"\n* \"kubernetes.azure.com/role\"\n* \"kubernetes.azure.com/scalesetpriority\"\n* \"kubernetes.io/hostname\"\n* \"kubernetes.azure.com/storageprofile\"\n* \"kubernetes.azure.com/storagetier\"\n* \"kubernetes.azure.com/instance-sku\"\n* \"kubernetes.azure.com/node-image-version\"\n* \"kubernetes.azure.com/subnet\"\n* \"kubernetes.azure.com/vnet\"\n* \"kubernetes.azure.com/ppg\"\n* \"kubernetes.azure.com/encrypted-set\"\n* \"kubernetes.azure.com/accelerator\"\n* \"kubernetes.azure.com/fips_enabled\"\n* \"kubernetes.azure.com/os-sku\"\n",
                                        "example": {
                                          "key": "value"
                                        }
                                      },
                                      "taints": {
                                        "type": "array",
                                        "description": "Add taints to a virtual node group.\n",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "key": {
                                              "type": "string",
                                              "description": "Set taint key.\nThe following are not allowed:\n* \"kubernetes.azure.com/scalesetpriority\"\n"
                                            },
                                            "value": {
                                              "type": "string",
                                              "description": "Set taint value.\n"
                                            },
                                            "effect": {
                                              "type": "string",
                                              "description": "Set taint effect.\n",
                                              "enum": [
                                                "NoSchedule",
                                                "PreferNoSchedule",
                                                "NoExecute",
                                                "PreferNoExecute"
                                              ]
                                            }
                                          }
                                        },
                                        "example": [
                                          {
                                            "key": "taintKey",
                                            "value": "taintValue",
                                            "effect": "NoSchedule"
                                          }
                                        ]
                                      },
                                      "tags": {
                                        "type": "object",
                                        "description": "A maximum of 20 unique key-value pairs for VM tags in the virtual node group.\nNote: Azure has a tag limit of 50 per node pool.\n"
                                      },
                                      "vmSizes": {
                                        "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/vmSizes"
                                      },
                                      "restrictScaleDown": {
                                        "type": "boolean",
                                        "description": "When set to True, VNG nodes will be treated as if all pods running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints).\nTherefore, Ocean will not scale nodes down unless they are empty.\n",
                                        "example": false
                                      }
                                    }
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2021-03-17T08:13:08.000Z",
                                    "description": "A timestamp of the Ocean creation.\n"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2021-03-17T15:06:13.000Z",
                                    "description": "A timestamp of the latest Ocean update.\n"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}": {
      "get": {
        "summary": "Get Cluster",
        "description": "Get the configurations for a specified Ocean cluster.\n",
        "operationId": "oceanAKSClusterGet",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AKS Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1cluster/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Cluster",
        "description": "Update a specified Ocean cluster.\n<br />\nThis API supports partial updates, so specific fields can be updated separately.\n\nNotes:\n<br />\nWhen labels, tags and taints are updated in the VNG template, all <b>existing</b> nodes from VNGs that inherit these properties\nfrom the tamplate will be updated as well.\n",
        "operationId": "oceanAKSClusterUpdate",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "cluster"
                    ],
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "description": "The Ocean cluster.\n",
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "test",
                            "description": "A name for the Ocean cluster.\n"
                          },
                          "autoScaler": {
                            "$ref": "#/paths/~1ocean~1azure~1np~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/autoScaler"
                          },
                          "scheduling": {
                            "$ref": "#/paths/~1ocean~1azure~1np~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/scheduling"
                          },
                          "logging": {
                            "$ref": "#/paths/~1ocean~1azure~1np~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/logging"
                          },
                          "health": {
                            "$ref": "#/paths/~1ocean~1azure~1np~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/health"
                          },
                          "virtualNodeGroupTemplate": {
                            "type": "object",
                            "title": "Ocean AKS Virtual Node Group Template",
                            "properties": {
                              "availabilityZones": {
                                "type": "array",
                                "description": "An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "1",
                                  "2",
                                  "3"
                                ]
                              },
                              "nodePoolProperties": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/nodePoolProperties"
                              },
                              "nodeCountLimits": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/nodeCountLimits"
                              },
                              "strategy": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/strategy"
                              },
                              "autoScale": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/autoScale"
                              },
                              "labels": {
                                "type": "object",
                                "description": "key-value pairs of labels to add to the virtual node group.\\\nOnly custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.\\\nThe following are not allowed:\n* \"kubernetes.azure.com/agentpool\"\n* \"kubernetes.io/arch\"* \"kubernetes.io/os\"\n* \"node.kubernetes.io/instance-type\"\n* \"topology.kubernetes.io/region\"\n* \"topology.kubernetes.io/zone\"\n* \"kubernetes.azure.com/cluster\"\n* \"kubernetes.azure.com/mode\"\n* \"kubernetes.azure.com/role\"\n* \"kubernetes.azure.com/scalesetpriority\"\n* \"kubernetes.io/hostname\"\n* \"kubernetes.azure.com/storageprofile\"\n* \"kubernetes.azure.com/storagetier\"\n* \"kubernetes.azure.com/instance-sku\"\n* \"kubernetes.azure.com/node-image-version\"\n* \"kubernetes.azure.com/subnet\"\n* \"kubernetes.azure.com/vnet\"\n* \"kubernetes.azure.com/ppg\"\n* \"kubernetes.azure.com/encrypted-set\"\n* \"kubernetes.azure.com/accelerator\"\n* \"kubernetes.azure.com/fips_enabled\"\n* \"kubernetes.azure.com/os-sku\"\n",
                                "example": {
                                  "key": "value"
                                }
                              },
                              "taints": {
                                "type": "array",
                                "description": "Add taints to a virtual node group.\n",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "key": {
                                      "type": "string",
                                      "description": "Set taint key.\nThe following are not allowed:\n* \"kubernetes.azure.com/scalesetpriority\"\n"
                                    },
                                    "value": {
                                      "type": "string",
                                      "description": "Set taint value.\n"
                                    },
                                    "effect": {
                                      "type": "string",
                                      "description": "Set taint effect.\n",
                                      "enum": [
                                        "NoSchedule",
                                        "PreferNoSchedule",
                                        "NoExecute",
                                        "PreferNoExecute"
                                      ]
                                    }
                                  }
                                },
                                "example": [
                                  {
                                    "key": "taintKey",
                                    "value": "taintValue",
                                    "effect": "NoSchedule"
                                  }
                                ]
                              },
                              "tags": {
                                "type": "object",
                                "description": "A maximum of 20 unique key-value pairs for VM tags in the virtual node group.\nNote: Azure has a tag limit of 50 per node pool.\n"
                              },
                              "vmSizes": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/vmSizes"
                              },
                              "scheduling": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/scheduling"
                              },
                              "restrictScaleDown": {
                                "type": "boolean",
                                "description": "When set to True, VNG nodes will be treated as if all pods running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints).\nTherefore, Ocean will not scale nodes down unless they are empty.\n",
                                "example": false
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean AKS Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1cluster/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Cluster",
        "description": "Delete a specified Ocean cluster.\n",
        "operationId": "oceanAKSClusterDelete",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AKS Delete Cluster Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/aks/import": {
      "post": {
        "summary": "Import Cluster",
        "description": "The Import Cluster API call returns a JSON formatted Ocean cluster specification for a given AKS cluster and import identifier.\nThe returned specification is ready to use in the [Ocean AKS Cluster Create](https://spec.dev.spot.io/#operation/oceanAKSClusterCreate) API call.\n",
        "operationId": "oceanAKSClusterImport",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "resourceGroupName",
            "example": "test-clust_group",
            "description": "The name of the resource group of the AKS cluster.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          },
          {
            "in": "query",
            "name": "aksClusterName",
            "example": "test-cluster",
            "description": "The name of the aks cluster.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AKS Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/aks/import"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "cluster": {
                                    "type": "object",
                                    "description": "The Ocean cluster.\n",
                                    "properties": {
                                      "id": {
                                        "type": "string",
                                        "readOnly": true,
                                        "example": "o-134abcd",
                                        "description": "Ocean cluster identifier.\n"
                                      },
                                      "name": {
                                        "type": "string",
                                        "example": "test",
                                        "description": "Add a name for the Ocean cluster.\n"
                                      },
                                      "controllerClusterId": {
                                        "type": "string",
                                        "example": "test-123124",
                                        "description": "Enter a unique Ocean cluster identifier. Cannot be updated.\n"
                                      },
                                      "aks": {
                                        "type": "object",
                                        "title": "Ocean AKS - AKS Cluster Configuration",
                                        "required": [
                                          "clusterName",
                                          "resourceGroupName",
                                          "region",
                                          "infrastructureResourceGroupName"
                                        ],
                                        "description": "AKS cluster configuration. Cannot be updated.\n",
                                        "properties": {
                                          "clusterName": {
                                            "type": "string",
                                            "description": "The name  of the AKS Cluster.\n",
                                            "example": "test-cluster"
                                          },
                                          "resourceGroupName": {
                                            "type": "string",
                                            "description": "The name of the cluster's resource group.\n",
                                            "example": "TestResourceGroup"
                                          },
                                          "region": {
                                            "type": "string",
                                            "description": "The cluster's region.\n",
                                            "example": "eastus"
                                          },
                                          "infrastructureResourceGroupName": {
                                            "type": "string",
                                            "description": "The name of the cluster's infrastructure resource group.\n",
                                            "example": "MC_TestResourceGroup_test-cluster_eastus"
                                          }
                                        }
                                      },
                                      "autoScaler": {
                                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/autoScaler"
                                      },
                                      "scheduling": {
                                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/scheduling"
                                      },
                                      "health": {
                                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster/post/requestBody/content/application~1json/schema/allOf/0/properties/cluster/properties/health"
                                      },
                                      "virtualNodeGroupTemplate": {
                                        "type": "object",
                                        "title": "Ocean AKS Virtual Node Group Template",
                                        "properties": {
                                          "availabilityZones": {
                                            "type": "array",
                                            "description": "An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n",
                                            "items": {
                                              "type": "string"
                                            },
                                            "example": [
                                              "1",
                                              "2",
                                              "3"
                                            ]
                                          },
                                          "nodePoolProperties": {
                                            "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup/post/requestBody/content/application~1json/schema/allOf/0/properties/virtualNodeGroup/properties/nodePoolProperties"
                                          },
                                          "nodeCountLimits": {
                                            "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/nodeCountLimits"
                                          },
                                          "strategy": {
                                            "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/strategy"
                                          },
                                          "labels": {
                                            "type": "object",
                                            "description": "key-value pairs of labels to add to the virtual node group.\\\nOnly custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.\\\nThe following are not allowed:\n* \"kubernetes.azure.com/agentpool\"\n* \"kubernetes.io/arch\"* \"kubernetes.io/os\"\n* \"node.kubernetes.io/instance-type\"\n* \"topology.kubernetes.io/region\"\n* \"topology.kubernetes.io/zone\"\n* \"kubernetes.azure.com/cluster\"\n* \"kubernetes.azure.com/mode\"\n* \"kubernetes.azure.com/role\"\n* \"kubernetes.azure.com/scalesetpriority\"\n* \"kubernetes.io/hostname\"\n* \"kubernetes.azure.com/storageprofile\"\n* \"kubernetes.azure.com/storagetier\"\n* \"kubernetes.azure.com/instance-sku\"\n* \"kubernetes.azure.com/node-image-version\"\n* \"kubernetes.azure.com/subnet\"\n* \"kubernetes.azure.com/vnet\"\n* \"kubernetes.azure.com/ppg\"\n* \"kubernetes.azure.com/encrypted-set\"\n* \"kubernetes.azure.com/accelerator\"\n* \"kubernetes.azure.com/fips_enabled\"\n* \"kubernetes.azure.com/os-sku\"\n",
                                            "example": {
                                              "key": "value"
                                            }
                                          },
                                          "taints": {
                                            "type": "array",
                                            "description": "Add taints to a virtual node group.\n",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "key": {
                                                  "type": "string",
                                                  "description": "Set taint key.\nThe following are not allowed:\n* \"kubernetes.azure.com/scalesetpriority\"\n"
                                                },
                                                "value": {
                                                  "type": "string",
                                                  "description": "Set taint value.\n"
                                                },
                                                "effect": {
                                                  "type": "string",
                                                  "description": "Set taint effect.\n",
                                                  "enum": [
                                                    "NoSchedule",
                                                    "PreferNoSchedule",
                                                    "NoExecute",
                                                    "PreferNoExecute"
                                                  ]
                                                }
                                              }
                                            },
                                            "example": [
                                              {
                                                "key": "taintKey",
                                                "value": "taintValue",
                                                "effect": "NoSchedule"
                                              }
                                            ]
                                          },
                                          "tags": {
                                            "type": "object",
                                            "description": "A maximum of 10 unique key-value pairs for VM tags in the virtual node group.\n"
                                          },
                                          "restrictScaleDown": {
                                            "type": "boolean",
                                            "description": "When set to True, VNG nodes will be treated as if all pods running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints).\nTherefore, Ocean will not scale nodes down unless they are empty.\n",
                                            "example": false
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/launchNewNodes": {
      "put": {
        "summary": "Launch New Nodes",
        "description": "Launch new nodes for a cluster.\n",
        "operationId": "oceanAKSClusterLaunchNodes",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "Ocean AKS Launch Request",
                "required": [
                  "oceanId",
                  "adjustment"
                ],
                "properties": {
                  "oceanId": {
                    "type": "string",
                    "example": "o-134abcd",
                    "description": "Ocean cluster identifier.\n"
                  },
                  "vngIds": {
                    "type": "array",
                    "minimum": 1,
                    "items": {
                      "type": "string",
                      "example": "vng-12345abc",
                      "description": "Virtual node group identifier.\n"
                    }
                  },
                  "preferredLifecycle": {
                    "type": "string",
                    "enum": [
                      "Spot",
                      "Regular"
                    ],
                    "description": "The preferred life cycle to launch the node.\nIf not specified, the life cycle is chosen accoring to the scaled VNG.\n",
                    "example": "Spot"
                  },
                  "availabilityZones": {
                    "type": "array",
                    "description": "An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "1",
                      "2",
                      "3"
                    ]
                  },
                  "adjustment": {
                    "type": "integer",
                    "description": "The number of nodes to launch.\n",
                    "example": 2,
                    "minimum": 1
                  },
                  "minCoresPerNode": {
                    "type": "integer",
                    "description": "Minimum number of core per node.",
                    "example": 2,
                    "minimum": 2
                  },
                  "minMemoryGiBPerNode": {
                    "type": "number",
                    "format": "float",
                    "description": "Minimum memory per node.",
                    "example": 2,
                    "minimum": 2
                  },
                  "applicableVmSizes": {
                    "type": "array",
                    "minimum": 1,
                    "items": {
                      "type": "string",
                      "description": "Applicable VM sizes.\n"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Cluster Launch Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/launchNewNodes"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "vngScalingUpResults": {
                                    "type": "array",
                                    "description": "Virtual node group identifier.\n",
                                    "items": {
                                      "type": "object",
                                      "description": "vng scaling up results\n",
                                      "properties": {
                                        "vngId": {
                                          "type": "string",
                                          "example": "vng-12345abc"
                                        },
                                        "scaleNodePoolName": {
                                          "type": "string",
                                          "example": "omnp9e26aa3e"
                                        },
                                        "vmSizeName": {
                                          "type": "string",
                                          "example": "standard_d2as_v5"
                                        },
                                        "zones": {
                                          "type": "array",
                                          "items": {
                                            "type": "string"
                                          },
                                          "example": [
                                            "1"
                                          ]
                                        },
                                        "lifeCycle": {
                                          "type": "string",
                                          "example": "Spot"
                                        },
                                        "numOfNewScaleNodes": {
                                          "type": "integer",
                                          "example": 1
                                        }
                                      }
                                    }
                                  },
                                  "nodesLeftToScale": {
                                    "type": "integer",
                                    "description": "The number of nodes left to scale.\n",
                                    "example": 0
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:cluster:launchNodes"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/detachNodes": {
      "put": {
        "summary": "Detach Nodes",
        "description": "Detach Nodes nodes for a cluster.\n",
        "operationId": "oceanAKSV2ClusterDetachNodes",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "Ocean AKS Detach Request",
                "required": [
                  "oceanId",
                  "nodeNamesToDetach"
                ],
                "properties": {
                  "oceanId": {
                    "type": "string",
                    "example": "o-134abcd",
                    "description": "Ocean cluster identifier.\n"
                  },
                  "nodeNamesToDetach": {
                    "type": "array",
                    "minimum": 1,
                    "description": "Node names to detach from the Ocean cluster.\n",
                    "items": {
                      "type": "string",
                      "example": "aks-omnpf52d2a6b-36204769-vmss000012"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Detach ocean nodes response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/detachNodes"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "oceanId": {
                                    "type": "string",
                                    "example": "o-134abcd",
                                    "description": "Ocean cluster identifier.\n"
                                  },
                                  "detachedNodeNames": {
                                    "type": "array",
                                    "minimum": 1,
                                    "description": "Node names to detach from the Ocean cluster.\n",
                                    "items": {
                                      "type": "string",
                                      "example": "aks-omnpf52d2a6b-36204769-vmss000012"
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:cluster:detachNodes"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/virtualNodeGroup": {
      "post": {
        "summary": "Create Virtual Node Group",
        "description": "Create a virtual node group.\n",
        "operationId": "oceanAKSVirtualNodeGroupCreate",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "virtualNodeGroup"
                    ],
                    "properties": {
                      "virtualNodeGroup": {
                        "type": "object",
                        "title": "Ocean AKS Virtual Node Group",
                        "required": [
                          "oceanId",
                          "name"
                        ],
                        "properties": {
                          "name": {
                            "type": "string",
                            "example": "testVng",
                            "description": "Enter a name for the virtual node group.\n"
                          },
                          "oceanId": {
                            "type": "string",
                            "example": "o-134abcd",
                            "description": "Ocean cluster identifier.\n"
                          },
                          "availabilityZones": {
                            "type": "array",
                            "description": "An Array holding Availability Zones, this configures the availability zones the Ocean may launch nodes in per VNG.\\\nSelect zone 0 if you have a workload that requires no availability zone redundancy (AZ=null). You can select this option either alone or together with other availability zones.\\\nIn case zone 0 is selected together with other availability zones, nodes of zone 0 will be scaled only for workloads that demand it.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "0",
                              "1",
                              "2",
                              "3"
                            ]
                          },
                          "nodePoolProperties": {
                            "type": "object",
                            "title": "Ocean AKS Node Pool Properties",
                            "description": "The Ocean Node Pool Properties.\n",
                            "properties": {
                              "maxPodsPerNode": {
                                "type": "integer",
                                "description": "The maximum number of pods per node in the node pools.\n",
                                "minimum": 0,
                                "maximum": 250,
                                "example": 30,
                                "default": 110
                              },
                              "enableNodePublicIP": {
                                "description": "enable node public IP.\n",
                                "type": "boolean",
                                "example": true,
                                "default": false
                              },
                              "osDiskSizeGB": {
                                "type": "integer",
                                "description": "The size of the OS disk in GB. \nFor Linux OS, the minimum size is 32GB and for Windows OS the minimum is 128GB.\n",
                                "maximum": 1023,
                                "example": 64,
                                "default": 128
                              },
                              "osDiskType": {
                                "type": "string",
                                "description": "The type of the OS disk.\n",
                                "enum": [
                                  "Managed",
                                  "Ephemeral"
                                ],
                                "example": "Managed",
                                "default": "Ephemeral"
                              },
                              "osType": {
                                "type": "string",
                                "description": "The OS type of the OS disk.\n",
                                "enum": [
                                  "Linux",
                                  "Windows"
                                ],
                                "example": "Linux"
                              },
                              "osSKU": {
                                "type": "string",
                                "description": "The OS SKU of the OS type. Must correlate with the os type.\n",
                                "enum": [
                                  "Ubuntu",
                                  "AzureLinux",
                                  "CBLMariner",
                                  "Windows2019",
                                  "Windows2022"
                                ],
                                "example": "Ubuntu",
                                "default": "Ubuntu"
                              },
                              "kubernetesVersion": {
                                "type": "string",
                                "description": "The desired Kubernetes version of the launched nodes.\nIn case the value is null, the Kubernetes version of the control plane\nis used.\n",
                                "example": 1.26
                              },
                              "vnetSubnetIDs": {
                                "type": "array",
                                "description": "The IDs of subnets in an existing VNet into which to assign nodes in the cluster (requires azure network-plugin).\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default"
                                ]
                              },
                              "podSubnetIDs": {
                                "type": "array",
                                "description": "The IDs of subnets in an existing VNet into which to assign pods in the cluster (requires azure network-plugin).\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default"
                                ]
                              },
                              "linuxOSConfig": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/nodePoolProperties/properties/linuxOSConfig"
                              },
                              "localDnsProfile": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/nodePoolProperties/properties/localDnsProfile"
                              },
                              "encryptionAtHost": {
                                "type": "boolean",
                                "description": "Whether to enable host-based encryption for nodes launched from this virtual node group.\nWhen set to true, use vmSizes.preferredVmSizes to provide compatible VM sizes.\n\nIMPORTANT: This setting is immutable at the Azure infrastructure level once nodes are launched.\nChanging this value requires a roll operation for new nodes to reflect the updated configuration.\n",
                                "example": true,
                                "default": false
                              }
                            }
                          },
                          "nodeCountLimits": {
                            "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/nodeCountLimits"
                          },
                          "strategy": {
                            "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/strategy"
                          },
                          "autoScale": {
                            "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/autoScale"
                          },
                          "labels": {
                            "type": "object",
                            "description": "key-value pairs of labels to add to the virtual node group.\\\nOnly custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.\\\nThe following are not allowed:\n* \"kubernetes.azure.com/agentpool\"\n* \"kubernetes.io/arch\"* \"kubernetes.io/os\"\n* \"node.kubernetes.io/instance-type\"\n* \"topology.kubernetes.io/region\"\n* \"topology.kubernetes.io/zone\"\n* \"kubernetes.azure.com/cluster\"\n* \"kubernetes.azure.com/mode\"\n* \"kubernetes.azure.com/role\"\n* \"kubernetes.azure.com/scalesetpriority\"\n* \"kubernetes.io/hostname\"\n* \"kubernetes.azure.com/storageprofile\"\n* \"kubernetes.azure.com/storagetier\"\n* \"kubernetes.azure.com/instance-sku\"\n* \"kubernetes.azure.com/node-image-version\"\n* \"kubernetes.azure.com/subnet\"\n* \"kubernetes.azure.com/vnet\"\n* \"kubernetes.azure.com/ppg\"\n* \"kubernetes.azure.com/encrypted-set\"\n* \"kubernetes.azure.com/accelerator\"\n* \"kubernetes.azure.com/fips_enabled\"\n* \"kubernetes.azure.com/os-sku\"\n",
                            "example": {
                              "key": "value"
                            }
                          },
                          "taints": {
                            "type": "array",
                            "description": "Add taints to a virtual node group.\n",
                            "items": {
                              "type": "object",
                              "properties": {
                                "key": {
                                  "type": "string",
                                  "description": "Set taint key.\nThe following are not allowed:\n* \"kubernetes.azure.com/scalesetpriority\"\n"
                                },
                                "value": {
                                  "type": "string",
                                  "description": "Set taint value.\n"
                                },
                                "effect": {
                                  "type": "string",
                                  "description": "Set taint effect.\n",
                                  "enum": [
                                    "NoSchedule",
                                    "PreferNoSchedule",
                                    "NoExecute",
                                    "PreferNoExecute"
                                  ]
                                }
                              }
                            },
                            "example": [
                              {
                                "key": "taintKey",
                                "value": "taintValue",
                                "effect": "NoSchedule"
                              }
                            ]
                          },
                          "tags": {
                            "type": "object",
                            "description": "A maximum of 20 unique key-value pairs for VM tags in the virtual node group.\nNote: Azure has a tag limit of 50 per node pool.\n"
                          },
                          "vmSizes": {
                            "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/vmSizes"
                          },
                          "scheduling": {
                            "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/scheduling"
                          },
                          "restrictScaleDown": {
                            "type": "boolean",
                            "description": "When set to True, VNG nodes will be treated as if all pods running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints).\nTherefore, Ocean will not scale nodes down unless they are empty.\n",
                            "example": false
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/virtualNodeGroup"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:virtualNodeGroup"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Virtual Node Groups",
        "description": "List the configurations for all virtual node groups in the account or in a specified cluster.\n",
        "operationId": "oceanAKSVirtualNodeGroupList",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/virtualNodeGroup"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Ocean AKS Virtual Node Group",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "Virtual Node Group identifier.\n",
                                    "example": "vng-134abcd"
                                  },
                                  "name": {
                                    "type": "string",
                                    "example": "testVng",
                                    "description": "Enter a name for the virtual node group.\n"
                                  },
                                  "oceanId": {
                                    "type": "string",
                                    "readOnly": true,
                                    "example": "o-134abcd",
                                    "description": "Ocean cluster identifier.\n"
                                  },
                                  "availabilityZones": {
                                    "type": "array",
                                    "description": "An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "1",
                                      "2",
                                      "3"
                                    ]
                                  },
                                  "nodePoolProperties": {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup/post/requestBody/content/application~1json/schema/allOf/0/properties/virtualNodeGroup/properties/nodePoolProperties"
                                  },
                                  "nodeCountLimits": {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/nodeCountLimits"
                                  },
                                  "strategy": {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/strategy"
                                  },
                                  "autoScale": {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/autoScale"
                                  },
                                  "labels": {
                                    "type": "object",
                                    "description": "key-value pairs of labels to add to the virtual node group.\\\nOnly custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.\\\nThe following are not allowed:\n* \"kubernetes.azure.com/agentpool\"\n* \"kubernetes.io/arch\"* \"kubernetes.io/os\"\n* \"node.kubernetes.io/instance-type\"\n* \"topology.kubernetes.io/region\"\n* \"topology.kubernetes.io/zone\"\n* \"kubernetes.azure.com/cluster\"\n* \"kubernetes.azure.com/mode\"\n* \"kubernetes.azure.com/role\"\n* \"kubernetes.azure.com/scalesetpriority\"\n* \"kubernetes.io/hostname\"\n* \"kubernetes.azure.com/storageprofile\"\n* \"kubernetes.azure.com/storagetier\"\n* \"kubernetes.azure.com/instance-sku\"\n* \"kubernetes.azure.com/node-image-version\"\n* \"kubernetes.azure.com/subnet\"\n* \"kubernetes.azure.com/vnet\"\n* \"kubernetes.azure.com/ppg\"\n* \"kubernetes.azure.com/encrypted-set\"\n* \"kubernetes.azure.com/accelerator\"\n* \"kubernetes.azure.com/fips_enabled\"\n* \"kubernetes.azure.com/os-sku\"\n",
                                    "example": {
                                      "key": "value"
                                    }
                                  },
                                  "taints": {
                                    "type": "array",
                                    "description": "Add taints to a virtual node group.\n",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "key": {
                                          "type": "string",
                                          "description": "Set taint key.\nThe following are not allowed:\n* \"kubernetes.azure.com/scalesetpriority\"\n"
                                        },
                                        "value": {
                                          "type": "string",
                                          "description": "Set taint value.\n"
                                        },
                                        "effect": {
                                          "type": "string",
                                          "description": "Set taint effect.\n",
                                          "enum": [
                                            "NoSchedule",
                                            "PreferNoSchedule",
                                            "NoExecute",
                                            "PreferNoExecute"
                                          ]
                                        }
                                      }
                                    },
                                    "example": [
                                      {
                                        "key": "taintKey",
                                        "value": "taintValue",
                                        "effect": "NoSchedule"
                                      }
                                    ]
                                  },
                                  "tags": {
                                    "type": "object",
                                    "description": "A maximum of 20 unique key-value pairs for VM tags in the virtual node group.\nNote: Azure has a tag limit of 50 per node pool.\n"
                                  },
                                  "vmSizes": {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/vmSizes"
                                  },
                                  "scheduling": {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/scheduling"
                                  },
                                  "restrictScaleDown": {
                                    "type": "boolean",
                                    "description": "When set to True, VNG nodes will be treated as if all pods running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints).\nTherefore, Ocean will not scale nodes down unless they are empty.\n",
                                    "example": false
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2021-03-17T08:13:08.000Z",
                                    "description": "A timestamp of the Ocean creation.\n"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2021-03-17T15:06:13.000Z",
                                    "description": "A timestamp of the latest Ocean update.\n"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:virtualNodeGroup"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/virtualNodeGroup/{virtualNodeGroupId}": {
      "get": {
        "summary": "Get Virtual Node Group",
        "description": "Get the configuration of a specified virtual node group.\n",
        "operationId": "oceanAKSVirtualNodeGroupGet",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "virtualNodeGroupId",
            "example": "vng-12345abc",
            "description": "Ocean Virtual Node Group identifier.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/virtualNodeGroup/vng-12345abc"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:virtualNodeGroup"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Virtual Node Group",
        "description": "Update a specified virtual node group in an Ocean cluster.\n<br />\nThis API supports partial updates, so specific fields can be updated separately.\n\nNotes:\n<br />\nWhen labels, tags and taints are updated the <b>existing</b> nodes are updated as well.\n",
        "operationId": "oceanAKSVirtualNodeGroupUpdate",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "virtualNodeGroup"
                ],
                "properties": {
                  "virtualNodeGroup": {
                    "type": "object",
                    "title": "Ocean AKS Virtual Node Group",
                    "properties": {
                      "name": {
                        "type": "string",
                        "example": "testVng",
                        "description": "Enter a name for the virtual node group.\n"
                      },
                      "availabilityZones": {
                        "type": "array",
                        "description": "An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "1",
                          "2",
                          "3"
                        ]
                      },
                      "nodePoolProperties": {
                        "type": "object",
                        "title": "Ocean AKS Node Pool Properties",
                        "description": "The Ocean Node Pool Properties.\n",
                        "properties": {
                          "maxPodsPerNode": {
                            "type": "integer",
                            "description": "The maximum number of pods per node in the node pools.\n",
                            "minimum": 0,
                            "maximum": 250,
                            "example": 30
                          },
                          "enableNodePublicIP": {
                            "description": "enable node public IP.\n",
                            "type": "boolean",
                            "example": true
                          },
                          "osDiskSizeGB": {
                            "type": "integer",
                            "description": "The size of the OS disk in GB. \nFor Linux OS, the minimum size is 32GB and for Windows OS the minimum is 128GB.\n",
                            "maximum": 1023,
                            "example": 64
                          },
                          "osDiskType": {
                            "type": "string",
                            "description": "The type of the OS disk.\n",
                            "enum": [
                              "Managed",
                              "Ephemeral"
                            ],
                            "example": "Ephemeral"
                          },
                          "osSKU": {
                            "type": "string",
                            "description": "The OS SKU of the OS type. Must correlate with the os type.\n",
                            "enum": [
                              "Ubuntu",
                              "AzureLinux",
                              "CBLMariner",
                              "Windows2019",
                              "Windows2022"
                            ],
                            "example": "Ubuntu"
                          },
                          "kubernetesVersion": {
                            "type": "string",
                            "description": "The desired Kubernetes version of the luanched nodes.\nIn case the value is null, the Kubernetes version of the control plane\nis used.\n",
                            "example": 1.26
                          },
                          "vnetSubnetIDs": {
                            "type": "array",
                            "description": "The IDs of subnets in an existing VNet into which to assign nodes in the cluster (requires azure network-plugin).\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default"
                            ]
                          },
                          "podSubnetIDs": {
                            "type": "array",
                            "description": "The IDs of subnets in an existing VNet into which to assign pods in the cluster (requires azure network-plugin).\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "/subscriptions/123456-1234-1234-1234-123456789/resourceGroups/ExampleResourceGroup/providers/Microsoft.Network/virtualNetworks/ExampleVirtualNetwork/subnets/default"
                            ]
                          },
                          "linuxOSConfig": {
                            "type": "object",
                            "title": "Ocean AKS Linux OS Config",
                            "description": "Custom Linux OS configuration\n",
                            "properties": {
                              "sysctls": {
                                "type": "object",
                                "properties": {
                                  "vmMaxMapCount": {
                                    "type": "integer",
                                    "description": "Maximum number of memory map areas a process may have.\nCan be configured only if OS type is Linux.\n",
                                    "example": 79550,
                                    "minimum": 65530,
                                    "maximum": 262144
                                  }
                                }
                              }
                            }
                          },
                          "localDnsProfile": {
                            "type": "object",
                            "title": "Ocean AKS LocalDNS Profile",
                            "description": "AKS LocalDNS profile configuration for the VNG.\nRequires VM sizes with at least 4 vCPUs and Linux (Ubuntu 22.04+ or Azure Linux) OS.\nSee: https://learn.microsoft.com/en-us/azure/aks/localdns-custom\n",
                            "example": {
                              "mode": "Required",
                              "vnetDNSOverrides": {
                                ".": {
                                  "queryLogging": "Error",
                                  "protocol": "PreferUDP",
                                  "forwardDestination": "VnetDNS",
                                  "forwardPolicy": "Sequential",
                                  "maxConcurrent": 1000,
                                  "cacheDurationInSeconds": 3600,
                                  "serveStaleDurationInSeconds": 3600,
                                  "serveStale": "Immediate"
                                },
                                "cluster.local": {
                                  "queryLogging": "Error",
                                  "protocol": "ForceTCP",
                                  "forwardDestination": "ClusterCoreDNS",
                                  "forwardPolicy": "Sequential",
                                  "maxConcurrent": 1000,
                                  "cacheDurationInSeconds": 3600,
                                  "serveStaleDurationInSeconds": 3600,
                                  "serveStale": "Immediate"
                                }
                              },
                              "kubeDNSOverrides": {
                                ".": {
                                  "queryLogging": "Error",
                                  "protocol": "PreferUDP",
                                  "forwardDestination": "ClusterCoreDNS",
                                  "forwardPolicy": "Sequential",
                                  "maxConcurrent": 1000,
                                  "cacheDurationInSeconds": 3600,
                                  "serveStaleDurationInSeconds": 3600,
                                  "serveStale": "Immediate"
                                },
                                "cluster.local": {
                                  "queryLogging": "Error",
                                  "protocol": "ForceTCP",
                                  "forwardDestination": "ClusterCoreDNS",
                                  "forwardPolicy": "Sequential",
                                  "maxConcurrent": 1000,
                                  "cacheDurationInSeconds": 3600,
                                  "serveStaleDurationInSeconds": 3600,
                                  "serveStale": "Immediate"
                                }
                              }
                            },
                            "properties": {
                              "mode": {
                                "type": "string",
                                "enum": [
                                  "Required",
                                  "Preferred",
                                  "Disabled"
                                ],
                                "description": "The LocalDNS mode. Required when localDnsProfile is configured.",
                                "example": "Required"
                              },
                              "vnetDNSOverrides": {
                                "type": "object",
                                "description": "Per-zone DNS override configuration for VNet DNS resolution.\nKeys are DNS zone names (e.g. \".\" or \"cluster.local\").\n\nExample:\n\n```json\n{\n  \".\": {\n    \"queryLogging\": \"Error\",\n    \"protocol\": \"PreferUDP\",\n    \"forwardDestination\": \"VnetDNS\",\n    \"forwardPolicy\": \"Sequential\",\n    \"maxConcurrent\": 1000,\n    \"cacheDurationInSeconds\": 3600,\n    \"serveStaleDurationInSeconds\": 3600,\n    \"serveStale\": \"Immediate\"\n  },\n  \"cluster.local\": {\n    \"queryLogging\": \"Error\",\n    \"protocol\": \"ForceTCP\",\n    \"forwardDestination\": \"ClusterCoreDNS\",\n    \"forwardPolicy\": \"Sequential\",\n    \"maxConcurrent\": 1000,\n    \"cacheDurationInSeconds\": 3600,\n    \"serveStaleDurationInSeconds\": 3600,\n    \"serveStale\": \"Immediate\"\n  }\n}\n```\n"
                              },
                              "kubeDNSOverrides": {
                                "type": "object",
                                "description": "Per-zone DNS override configuration for kube-dns/CoreDNS resolution.\nKeys are DNS zone names (e.g. \".\" or \"cluster.local\").\n\nExample:\n\n```json\n{\n  \".\": {\n    \"queryLogging\": \"Error\",\n    \"protocol\": \"PreferUDP\",\n    \"forwardDestination\": \"ClusterCoreDNS\",\n    \"forwardPolicy\": \"Sequential\",\n    \"maxConcurrent\": 1000,\n    \"cacheDurationInSeconds\": 3600,\n    \"serveStaleDurationInSeconds\": 3600,\n    \"serveStale\": \"Immediate\"\n  },\n  \"cluster.local\": {\n    \"queryLogging\": \"Error\",\n    \"protocol\": \"ForceTCP\",\n    \"forwardDestination\": \"ClusterCoreDNS\",\n    \"forwardPolicy\": \"Sequential\",\n    \"maxConcurrent\": 1000,\n    \"cacheDurationInSeconds\": 3600,\n    \"serveStaleDurationInSeconds\": 3600,\n    \"serveStale\": \"Immediate\"\n  }\n}\n```\n"
                              }
                            },
                            "required": [
                              "mode"
                            ]
                          },
                          "encryptionAtHost": {
                            "type": "boolean",
                            "description": "Whether to enable host-based encryption for nodes launched from this virtual node group.\nWhen set to true, use vmSizes.preferredVmSizes to provide compatible VM sizes.\n\nIMPORTANT: This setting is immutable at the Azure infrastructure level once nodes are launched.\nChanging this value requires a roll operation for new nodes to reflect the updated configuration.\n",
                            "example": true,
                            "default": false
                          }
                        }
                      },
                      "nodeCountLimits": {
                        "type": "object",
                        "title": "Ocean AKS Node Count Limits",
                        "description": "Limit the number of nodes in a VNG.\n",
                        "properties": {
                          "minCount": {
                            "description": "Minimum node count limit.\n",
                            "type": "integer",
                            "minimum": 0,
                            "example": 1,
                            "default": 0
                          },
                          "maxCount": {
                            "description": "Maximum node count limit.\n",
                            "type": "integer",
                            "minimum": 0,
                            "example": 100,
                            "default": 1000
                          }
                        }
                      },
                      "strategy": {
                        "type": "object",
                        "title": "Ocean AKS Strategy",
                        "description": "The Ocean AKS Strategy object.\n",
                        "properties": {
                          "shouldUtilizeCommitments": {
                            "type": "boolean",
                            "description": "Determines whether to utilize any existing Azure Savings Plans or Reserved Instances associated with the subscription for On-Demand VMs.\n",
                            "example": true,
                            "default": false
                          },
                          "spotPercentage": {
                            "type": "integer",
                            "description": "Percentage of spot VMs to maintain.\n",
                            "example": 50,
                            "minimum": 0,
                            "maximum": 100
                          },
                          "fallbackToOd": {
                            "type": "boolean",
                            "description": "If no spot instance markets are available, enable Ocean to launch on-demand instances instead.\n",
                            "example": true
                          },
                          "drainingTimeout": {
                            "type": "integer",
                            "description": "Time in seconds to allow the node to drain before it is terminated.\n",
                            "example": 600,
                            "minimum": 300,
                            "maximum": 3600
                          }
                        }
                      },
                      "autoScale": {
                        "type": "object",
                        "description": "Object specifying the automatic scaling of an Ocean VNG.\n",
                        "title": "Ocean AKS Auto Scale",
                        "properties": {
                          "autoHeadroomPercentage": {
                            "type": "integer",
                            "description": "Optionally set a number between 0-200 to control the percentage of VNG resources dedicated to automatic headroom.\n",
                            "example": 5,
                            "minimum": 0,
                            "maximum": 200
                          },
                          "headrooms": {
                            "type": "array",
                            "description": "Specify the custom headroom per VNG. Provide a list of headroom objects.\n",
                            "title": "Headrooms",
                            "items": {
                              "type": "object",
                              "properties": {
                                "cpuPerUnit": {
                                  "description": "Configure the number of CPUs to allocate the headroom. CPUs are denoted in millicores, where 1000 millicores = 1 vCPU.\n",
                                  "type": "integer",
                                  "example": 1024,
                                  "default": 0
                                },
                                "memoryPerUnit": {
                                  "description": "Configure the amount of memory (MiB) to allocate the headroom.\n",
                                  "type": "integer",
                                  "example": 512,
                                  "default": 0
                                },
                                "gpuPerUnit": {
                                  "type": "integer",
                                  "description": "Amont of GPU to allocate for headroom unit.\n",
                                  "example": 0,
                                  "default": 0
                                },
                                "numOfUnits": {
                                  "description": "The number of units to retain as headroom, where each unit has the defined headroom CPU and memory.\n",
                                  "type": "integer",
                                  "example": 2,
                                  "default": 0
                                }
                              }
                            }
                          }
                        }
                      },
                      "labels": {
                        "type": "object",
                        "description": "key-value pairs of labels to add to the virtual node group.\\\nOnly custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.\\\nThe following are not allowed:\n* \"kubernetes.azure.com/agentpool\"\n* \"kubernetes.io/arch\"* \"kubernetes.io/os\"\n* \"node.kubernetes.io/instance-type\"\n* \"topology.kubernetes.io/region\"\n* \"topology.kubernetes.io/zone\"\n* \"kubernetes.azure.com/cluster\"\n* \"kubernetes.azure.com/mode\"\n* \"kubernetes.azure.com/role\"\n* \"kubernetes.azure.com/scalesetpriority\"\n* \"kubernetes.io/hostname\"\n* \"kubernetes.azure.com/storageprofile\"\n* \"kubernetes.azure.com/storagetier\"\n* \"kubernetes.azure.com/instance-sku\"\n* \"kubernetes.azure.com/node-image-version\"\n* \"kubernetes.azure.com/subnet\"\n* \"kubernetes.azure.com/vnet\"\n* \"kubernetes.azure.com/ppg\"\n* \"kubernetes.azure.com/encrypted-set\"\n* \"kubernetes.azure.com/accelerator\"\n* \"kubernetes.azure.com/fips_enabled\"\n* \"kubernetes.azure.com/os-sku\"\n",
                        "example": {
                          "key": "value"
                        }
                      },
                      "taints": {
                        "type": "array",
                        "description": "Add taints to a virtual node group.\n",
                        "items": {
                          "type": "object",
                          "properties": {
                            "key": {
                              "type": "string",
                              "description": "Set taint key.\nThe following are not allowed:\n* \"kubernetes.azure.com/scalesetpriority\"\n"
                            },
                            "value": {
                              "type": "string",
                              "description": "Set taint value.\n"
                            },
                            "effect": {
                              "type": "string",
                              "description": "Set taint effect.\n",
                              "enum": [
                                "NoSchedule",
                                "PreferNoSchedule",
                                "NoExecute",
                                "PreferNoExecute"
                              ]
                            }
                          }
                        },
                        "example": [
                          {
                            "key": "taintKey",
                            "value": "taintValue",
                            "effect": "NoSchedule"
                          }
                        ]
                      },
                      "tags": {
                        "type": "object",
                        "description": "A maximum of 20 unique key-value pairs for VM tags in the virtual node group.\nNote: Azure has a tag limit of 50 per node pool.\n"
                      },
                      "vmSizes": {
                        "type": "object",
                        "title": "Ocean AKS VM Sizes",
                        "description": "The Ocean AKS VM Sizes object.\n",
                        "properties": {
                          "preferredVmSizes": {
                            "type": "array",
                            "description": "Preferred VM sizes for this virtual node group.\nUsed when nodePoolProperties.encryptionAtHost is true to constrain launches to compatible sizes.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "Standard_D4s_v3",
                              "Standard_D8s_v3"
                            ]
                          },
                          "filters": {
                            "type": "object",
                            "description": "Filters for the VM sizes that can be launched from the virtual node group.\n",
                            "properties": {
                              "minVCpu": {
                                "description": "Minimum number of vcpus available.\n",
                                "type": "integer",
                                "minimum": 2,
                                "example": 2
                              },
                              "maxVCpu": {
                                "description": "Maximum number of vcpus available.\n",
                                "type": "integer",
                                "minimum": 2,
                                "example": 16
                              },
                              "minMemoryGiB": {
                                "description": "Minimum amount of Memory (GiB).\n",
                                "type": "number",
                                "format": "float",
                                "minimum": 4,
                                "example": 8
                              },
                              "maxMemoryGiB": {
                                "description": "Maximum amount of Memory (GiB).\n",
                                "type": "number",
                                "format": "float",
                                "minimum": 0,
                                "example": 16
                              },
                              "architectures": {
                                "type": "array",
                                "description": "The filtered vm sizes will support at least one of the architectures from this list.\nx86_64 includes both intel64 and amd64.\n",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "X86_64",
                                    "INTEL64",
                                    "AMD64",
                                    "ARM64"
                                  ]
                                },
                                "example": [
                                  "x86_64"
                                ]
                              },
                              "series": {
                                "type": "array",
                                "description": "Only vm sizes belonging to a series from the list will be available for scaling.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "D v3",
                                  "F",
                                  "E v4"
                                ]
                              },
                              "excludeSeries": {
                                "type": "array",
                                "description": "Vm sizes belonging to a series from the list will not be available for scaling.\n",
                                "items": {
                                  "type": "string"
                                },
                                "example": [
                                  "Bs",
                                  "Da v4"
                                ]
                              },
                              "minDisk": {
                                "description": "Minimum number of data disks available.\n",
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 64,
                                "example": 1
                              },
                              "minGpu": {
                                "description": "Minimum number of GPUs available.\n",
                                "type": "number",
                                "format": "double",
                                "minimum": 0,
                                "maximum": 8,
                                "example": 1
                              },
                              "maxGpu": {
                                "description": "Maximum number of GPUs available.\n",
                                "type": "number",
                                "format": "double",
                                "minimum": 0,
                                "maximum": 8,
                                "example": 2
                              },
                              "diskPerformance": {
                                "type": "string",
                                "description": "The filtered vm sizes will support at least one of the classes from this list.\n",
                                "enum": [
                                  "Standard",
                                  "Premium"
                                ],
                                "example": "Standard"
                              },
                              "acceleratedNetworking": {
                                "type": "string",
                                "description": "In case acceleratedNetworking is set to Enabled, accelerated networking applies only to the VM that enables it.\n",
                                "enum": [
                                  "Enabled",
                                  "Disabled"
                                ],
                                "example": "Enabled"
                              },
                              "minNICs": {
                                "description": "Minimum number of network interfaces.\n",
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 16,
                                "example": 4
                              },
                              "vmTypes": {
                                "type": "array",
                                "description": "The filtered vm types will belong to one of the vm types from this list.\n",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "generalPurpose",
                                    "memoryOptimized",
                                    "computeOptimized",
                                    "highPerformanceCompute",
                                    "storageOptimized",
                                    "GPU"
                                  ]
                                },
                                "example": [
                                  "memoryOptimized"
                                ]
                              },
                              "gpuTypes": {
                                "type": "array",
                                "description": "The filtered gpu types will belong to one of the gpu types from this list.\n",
                                "items": {
                                  "type": "string",
                                  "enum": [
                                    "nvidia-tesla-v100",
                                    "amd-radeon-instinct-mi25",
                                    "nvidia-a10",
                                    "nvidia-tesla-a100",
                                    "nvidia-tesla-k80",
                                    "nvidia-tesla-m60",
                                    "nvidia-tesla-p100",
                                    "nvidia-tesla-p40",
                                    "nvidia-tesla-t4",
                                    "nvidia-tesla-h100"
                                  ],
                                  "example": [
                                    "nvidia-tesla-t4"
                                  ]
                                }
                              }
                            }
                          }
                        }
                      },
                      "scheduling": {
                        "type": "object",
                        "description": "An object used to specify times when the virtual node group will turn off all its node pools. Once the shutdown time will be over, the virtual node group will return to its previous state.\n",
                        "title": "Ocean VNG AKS Scheduling",
                        "properties": {
                          "shutdownHours": {
                            "type": "object",
                            "description": "An object used to specify times that the nodes in the virtual node group will be stopped.\n",
                            "title": "Shutdown Hours",
                            "properties": {
                              "timeWindows": {
                                "type": "array",
                                "description": "The times that the shutdown hours will apply. Required if isEnabled is true.\n",
                                "items": {
                                  "type": "string",
                                  "example": "Sat:08:00-Sun:08:00"
                                }
                              },
                              "isEnabled": {
                                "type": "boolean",
                                "example": true,
                                "description": "Flag to enable or disable the shutdown hours mechanism. When False, the mechanism is deactivated, and the virtual node gorup remains in its current state.\n"
                              }
                            }
                          }
                        }
                      },
                      "restrictScaleDown": {
                        "type": "boolean",
                        "description": "When set to True, VNG nodes will be treated as if all pods running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints).\nTherefore, Ocean will not scale nodes down unless they are empty.\n",
                        "example": false
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/virtualNodeGroup/vng-12345abc"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:virtualNodeGroup"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Virtual Node Group",
        "description": "Delete a specified virtual node group in an Ocean cluster.\n",
        "operationId": "oceanAKSVirtualNodeGroupDelete",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AKS Virtual Node Group Delete Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/virtualNodeGroup/vng-12345abc"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/virtualNodeGroup/import": {
      "post": {
        "summary": "Import Virtual Node Group",
        "description": "The Import Ocean Virtual Node Group (VNG) returns a JSON formatted Ocean Virtual Node Group specification based on a given AKS Node Pool.\nThe returned specification is ready to use in the [Ocean AKS Virtual Node Group Create](https://spec.dev.spot.io/#operation/oceanAKSVirtualNodeGroupCreate) API call.\n",
        "operationId": "oceanAKSVirtualNodeGroupImport",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1gcp~1k8s~1launchSpec/get/parameters/1"
          },
          {
            "in": "query",
            "name": "nodePoolName",
            "description": "The name of the Node Pool.\n",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "nodePoolNameTest"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AKS Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/virtualNodeGroup/import"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "virtualNodeGroup": {
                                    "type": "object",
                                    "title": "Ocean AKS Virtual Node Group",
                                    "properties": {
                                      "name": {
                                        "type": "string",
                                        "example": "testVng",
                                        "description": "Enter a name for the virtual node group.\n"
                                      },
                                      "oceanId": {
                                        "type": "string",
                                        "readOnly": true,
                                        "example": "o-134abcd",
                                        "description": "Ocean cluster identifier.\n"
                                      },
                                      "availabilityZones": {
                                        "type": "array",
                                        "description": "An Array holding Availability Zones, this configures the availability zones the Ocean may launch instances in per VNG.\n",
                                        "items": {
                                          "type": "string"
                                        },
                                        "example": [
                                          "1",
                                          "2",
                                          "3"
                                        ]
                                      },
                                      "nodePoolProperties": {
                                        "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup/post/requestBody/content/application~1json/schema/allOf/0/properties/virtualNodeGroup/properties/nodePoolProperties"
                                      },
                                      "nodeCountLimits": {
                                        "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/nodeCountLimits"
                                      },
                                      "strategy": {
                                        "$ref": "#/paths/~1ocean~1azure~1np~1virtualNodeGroup~1%7BvirtualNodeGroupId%7D/put/requestBody/content/application~1json/schema/properties/virtualNodeGroup/properties/strategy"
                                      },
                                      "labels": {
                                        "type": "object",
                                        "description": "key-value pairs of labels to add to the virtual node group.\\\nOnly custom user labels are allowed, and not Kubernetes built-in labels or Spot internal labels.\\\nThe following are not allowed:\n* \"kubernetes.azure.com/agentpool\"\n* \"kubernetes.io/arch\"* \"kubernetes.io/os\"\n* \"node.kubernetes.io/instance-type\"\n* \"topology.kubernetes.io/region\"\n* \"topology.kubernetes.io/zone\"\n* \"kubernetes.azure.com/cluster\"\n* \"kubernetes.azure.com/mode\"\n* \"kubernetes.azure.com/role\"\n* \"kubernetes.azure.com/scalesetpriority\"\n* \"kubernetes.io/hostname\"\n* \"kubernetes.azure.com/storageprofile\"\n* \"kubernetes.azure.com/storagetier\"\n* \"kubernetes.azure.com/instance-sku\"\n* \"kubernetes.azure.com/node-image-version\"\n* \"kubernetes.azure.com/subnet\"\n* \"kubernetes.azure.com/vnet\"\n* \"kubernetes.azure.com/ppg\"\n* \"kubernetes.azure.com/encrypted-set\"\n* \"kubernetes.azure.com/accelerator\"\n* \"kubernetes.azure.com/fips_enabled\"\n* \"kubernetes.azure.com/os-sku\"\n",
                                        "example": {
                                          "key": "value"
                                        }
                                      },
                                      "taints": {
                                        "type": "array",
                                        "description": "Add taints to a virtual node group.\n",
                                        "items": {
                                          "type": "object",
                                          "properties": {
                                            "key": {
                                              "type": "string",
                                              "description": "Set taint key.\nThe following are not allowed:\n* \"kubernetes.azure.com/scalesetpriority\"\n"
                                            },
                                            "value": {
                                              "type": "string",
                                              "description": "Set taint value.\n"
                                            },
                                            "effect": {
                                              "type": "string",
                                              "description": "Set taint effect.\n",
                                              "enum": [
                                                "NoSchedule",
                                                "PreferNoSchedule",
                                                "NoExecute",
                                                "PreferNoExecute"
                                              ]
                                            }
                                          }
                                        },
                                        "example": [
                                          {
                                            "key": "taintKey",
                                            "value": "taintValue",
                                            "effect": "NoSchedule"
                                          }
                                        ]
                                      },
                                      "tags": {
                                        "type": "object",
                                        "description": "A maximum of 10 unique key-value pairs for VM tags in the virtual node group.\n"
                                      },
                                      "restrictScaleDown": {
                                        "type": "boolean",
                                        "description": "When set to True, VNG nodes will be treated as if all pods running have the [restrict-scale-down label](https://docs.flexera.com/spot/ocean/features/labels-and-taints).\nTherefore, Ocean will not scale nodes down unless they are empty.\n",
                                        "example": false
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/virtualNodeGroup/vmSizes": {
      "get": {
        "summary": "Get Virtual Node Group Allowed VM Sizes",
        "description": "Get the allowed VM sizes that can be launched according to the virtual node group properties and selected VM size filters.\n",
        "operationId": "oceanAKSVirtualNodeGroupVmSizes",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "virtualNodeGroupId",
            "example": "vng-12345abc",
            "required": true,
            "description": "Ocean Virtual Node Group identifier.\n",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Cluster Launch Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/virtualNodeGroup/vmSizes"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "allowedVmSizes": {
                                    "type": "array",
                                    "description": "A list of the allowed VM sizes that can be launched.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "standard_d2",
                                      "standard_d2_v2",
                                      "standard_d2_v3",
                                      "standard_d2_v4",
                                      "standard_d2_v5"
                                    ]
                                  },
                                  "numOfAllowedVmSizes": {
                                    "type": "number",
                                    "description": "The number of allowed VM sizes that can be launched.\n",
                                    "example": 5
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:k8s:np:virtualNodeGroup:allowedVmSizes"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}/roll": {
      "summary": "Ocean for AKS",
      "post": {
        "summary": "Initiate Roll",
        "description": "Roll an entire Ocean cluster or roll subsets of the cluster by specifying vngIds, nodePoolNames or nodeNames. Performing this request will start the roll immediately and run it in defined batches. Note that the first response for a successful request will indicate the start of a roll. In order to check the status of a roll, you can use the GET Roll API.\n",
        "operationId": "oceanAksRollInit",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "Roll",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "batchSizePercentage": {
                            "type": "integer",
                            "description": "Value as a percent to set the size of a batch in a roll. Valid values are 0-100. In case of null as value, the default value in the backend will be 20%.\n",
                            "example": 25
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "comment": {
                            "type": "string",
                            "description": "Add a comment description for the roll. The comment is limited to 256 chars and optional.\n",
                            "example": "This is why I deployed my cluster."
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "respectPdb": {
                            "type": "boolean",
                            "description": "During the roll, if the parameter is set to true we honor PDB during the nodes replacement.\n",
                            "example": false,
                            "default": true
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "respectRestrictScaleDown": {
                            "type": "boolean",
                            "description": "During the roll, if the parameter is set to true we honor Restrict Scale Down label during the nodes replacement.\n",
                            "example": true,
                            "default": false
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "batchMinHealthyPercentage": {
                            "type": "integer",
                            "description": "Indicates the threshold of minimum healthy nodes in single batch. If the amount of healthy nodes in single batch is under the threshold, the roll will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n",
                            "example": 100,
                            "default": 50
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "title": "Roll with node names",
                    "allOf": [
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/0"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/1"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/2"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/3"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/4"
                      },
                      {
                        "type": "object",
                        "properties": {
                          "nodeNames": {
                            "type": "array",
                            "description": "List of node names to be rolled. Each identifier is a string. nodeNames can be null, and cannot be used together with nodePoolNames and vngIds.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "aks-omnpbc2ebdb1-15563275-vmss00000g",
                              "aks-omnpe9429a2f-26725402-vmss000015"
                            ]
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "title": "Roll with node pool names",
                    "allOf": [
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/0"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/1"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/2"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/3"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/4"
                      },
                      {
                        "type": "object",
                        "properties": {
                          "nodePoolNames": {
                            "type": "array",
                            "description": "List of node pools to be rolled. Each node pool name is a string. nodePoolNames can be null, and cannot be used together with nodeNames and vngIds.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "omnp35f6cccb",
                              "omnp55bd559b"
                            ]
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "title": "Roll with virtual node group ids",
                    "allOf": [
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/0"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/1"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/2"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/3"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/post/requestBody/content/application~1json/schema/oneOf/0/allOf/4"
                      },
                      {
                        "type": "object",
                        "properties": {
                          "vngIds": {
                            "type": "array",
                            "description": "List of virtual node group identifiers to be rolled. Each identifier is a string. vngIds can be null, and cannot be used together with nodeNames and nodePoolNames.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "vng-69dc457b",
                              "vng-175947a4"
                            ]
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean AKS Create Cluster Roll Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc/roll"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "allOf": [
                                  {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "status": {
                                        "example": "IN_PROGRESS"
                                      }
                                    }
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "progress": {
                                        "example": {
                                          "detailedStatus": {
                                            "rollNodes": [
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss00000q",
                                                "status": "IN_PROGRESS"
                                              },
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss000008",
                                                "status": "TO_BE_REPLACED"
                                              },
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss00000r",
                                                "status": "TO_BE_REPLACED"
                                              },
                                              {
                                                "nodeName": "aks-omnpe9429a2f-26725402-vmss00000z",
                                                "status": "IN_PROGRESS"
                                              },
                                              {
                                                "nodeName": "aks-omnp0c85c2c2-26833420-vmss000001",
                                                "status": "IN_PROGRESS"
                                              },
                                              {
                                                "nodeName": "aks-omnp0c85c2c2-26833420-vmss000003",
                                                "status": "TO_BE_REPLACED"
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    }
                                  }
                                ]
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:roll"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Rolls",
        "description": "Get status for all rolls of an Ocean cluster.\n",
        "operationId": "oceanAksRollList",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AKS Get Cluster Roll Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc/roll"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "The identifier of the cluster roll.\n",
                                    "example": "scr-12345abc"
                                  },
                                  "oceanId": {
                                    "type": "string",
                                    "description": "The identifier of the ocean cluster being rolled.\n",
                                    "example": "o-12e31234"
                                  },
                                  "type": {
                                    "type": "string",
                                    "description": "The type of the trigger for the cluster roll\n",
                                    "enum": [
                                      "scheduled",
                                      "manual"
                                    ],
                                    "example": "manual"
                                  },
                                  "scope": {
                                    "type": "string",
                                    "enum": [
                                      "Cluster",
                                      "Vng",
                                      "Node Pool",
                                      "Node"
                                    ],
                                    "example": "Cluster"
                                  },
                                  "status": {
                                    "type": "string",
                                    "description": "The status of the roll.\n",
                                    "enum": [
                                      "IN_PROGRESS",
                                      "COMPLETED",
                                      "PARTLY_COMPLETED",
                                      "FAILED",
                                      "STOPPED"
                                    ],
                                    "example": "COMPLETED"
                                  },
                                  "currentBatch": {
                                    "type": "integer",
                                    "description": "The current batch being handled by the roll.\n",
                                    "example": 1
                                  },
                                  "numOfBatches": {
                                    "type": "integer",
                                    "description": "The total number of batches in the roll.\n",
                                    "example": 2
                                  },
                                  "comment": {
                                    "type": "string",
                                    "example": "This is why I deployed my cluster."
                                  },
                                  "progress": {
                                    "type": "object",
                                    "properties": {
                                      "progressPercentage": {
                                        "type": "integer",
                                        "example": 0
                                      },
                                      "detailedStatus": {
                                        "type": "object",
                                        "description": "An object containing detailed information about the progress of the roll.\n",
                                        "properties": {
                                          "rollNodes": {
                                            "type": "array",
                                            "description": "An array of objects containing detailed information about each node handled by the roll.\n",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "nodeName": {
                                                  "type": "string"
                                                },
                                                "status": {
                                                  "description": "The status of the node according to the roll.\n",
                                                  "type": "string",
                                                  "enum": [
                                                    "REPLACED",
                                                    "TO_BE_REPLACED",
                                                    "COULD_NOT_BE_REPLACED",
                                                    "NOT_REPLACED_DUE_TO_PDB",
                                                    "DID_NOT_REPLACE",
                                                    "IN_PROGRESS"
                                                  ]
                                                }
                                              }
                                            },
                                            "example": [
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss00000q",
                                                "status": "REPLACED"
                                              },
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss000008",
                                                "status": "TO_BE_REPLACED"
                                              },
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss00000r",
                                                "status": "COULD_NOT_BE_REPLACED"
                                              },
                                              {
                                                "nodeName": "aks-omnpe9429a2f-26725402-vmss00000z",
                                                "status": "NOT_REPLACED_DUE_TO_PDB"
                                              },
                                              {
                                                "nodeName": "aks-omnp0c85c2c2-26833420-vmss000001",
                                                "status": "IN_PROGRESS"
                                              },
                                              {
                                                "nodeName": "aks-omnp0c85c2c2-26833420-vmss000003",
                                                "status": "DID_NOT_REPLACE"
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "respectPdb": {
                                    "type": "boolean",
                                    "example": true
                                  },
                                  "respectRestrictScaleDown": {
                                    "type": "boolean",
                                    "example": false
                                  },
                                  "batchMinHealthyPercentage": {
                                    "type": "integer",
                                    "example": 70
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "description": "The creation timestamp of the roll.\n",
                                    "example": "2019-03-24T15:46:09.000Z"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "description": "The latest update timestamp of the roll.\n",
                                    "example": "2019-03-24T15:46:09.000Z"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:roll"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}/roll/{rollId}": {
      "summary": "Ocean for AKS",
      "get": {
        "summary": "Get Roll",
        "description": "Get status for a roll of an Ocean cluster.\n",
        "operationId": "oceanAksGetSingleRoll",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "in": "path",
            "name": "rollId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "acr-12345abc",
            "description": "Ocean cluster roll identifier.\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AKS Get Roll Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc/roll/scr-12345abc"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:roll"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}/roll/{rollId}/stop": {
      "summary": "Ocean for AKS",
      "put": {
        "summary": "Stop Roll",
        "description": "Stop a roll of an Ocean cluster.\n\n*Performing the request will stop the next batch in a roll.*\n",
        "operationId": "oceanAksRollStop",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll~1%7BrollId%7D/get/parameters/2"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AKS STOP Cluster Roll Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc/roll/scr-12345abc/stop"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "allOf": [
                                  {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1roll/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "status": {
                                        "example": "STOPPED"
                                      },
                                      "progress": {
                                        "example": {
                                          "detailedStatus": {
                                            "progressPercentage": 50,
                                            "rollNodes": [
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss00000q",
                                                "status": "REPLACED"
                                              },
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss000008",
                                                "status": "DID_NOT_REPLACE"
                                              },
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss00000r",
                                                "status": "DID_NOT_REPLACE"
                                              },
                                              {
                                                "nodeName": "aks-omnpe9429a2f-26725402-vmss00000z",
                                                "status": "REPLACED"
                                              },
                                              {
                                                "nodeName": "aks-omnp0c85c2c2-26833420-vmss000001",
                                                "status": "REPLACED"
                                              },
                                              {
                                                "nodeName": "aks-omnp0c85c2c2-26833420-vmss000003",
                                                "status": "DID_NOT_REPLACE"
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    }
                                  }
                                ]
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:roll"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}/migration/discovery": {
      "get": {
        "summary": "Get Migration Discovery",
        "description": "Get information about nodes which can be migrated into Ocean.\n",
        "operationId": "oceanAksGetMigrationDiscovery",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "in": "query",
            "name": "shouldFetchPods",
            "example": "true",
            "description": "Should fetch data about running pods for each node.\n",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Migration Discovery Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "ocean/azure/np/cluster/o-abcd1234/migration/discovery"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "title": "Workload migration discovery details",
                                "description": "Information about available nodes which can be migrated to the Ocean cluster",
                                "type": "object",
                                "properties": {
                                  "nodeName": {
                                    "type": "string",
                                    "description": "The node name.",
                                    "example": "aks-mynodepool-18735776-vmss000001"
                                  },
                                  "nodePoolName": {
                                    "type": "string",
                                    "description": "The NodePool Name.",
                                    "example": "mynodepool"
                                  },
                                  "runningPods": {
                                    "type": "integer",
                                    "description": "The number of running pods on the node (appears if shouldFetchPods was true).",
                                    "example": "6"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:k8s:np:nodePoolUnmanaged"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}/migration": {
      "summary": "Ocean for AKS",
      "post": {
        "summary": "Create Migration",
        "description": "Migrate to ocean workloads that run on unmanaged nodes by specifying nodePoolNames or nodeNames. Performing this request will start the migration immediately and run it in defined batches. Note that the first response for a successful request will indicate the start of a migration. In order to check the status of a migration, you can use the GET migration API.\n",
        "operationId": "oceanAksCreateMigration",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "oneOf": [
                  {
                    "type": "object",
                    "title": "Migration with node names",
                    "allOf": [
                      {
                        "type": "object",
                        "properties": {
                          "batchSizePercentage": {
                            "type": "integer",
                            "description": "Value as a percent to set the size of a batch in a migration. Valid values are 0-100. In case of null as value, the default value in the backend will be 20%.\n",
                            "minimum": 1,
                            "maximum": 100,
                            "example": 25
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "comment": {
                            "type": "string",
                            "description": "Add a comment description for the migration. The comment is limited to 256 chars and optional.\n",
                            "example": "This is why I deployed my cluster."
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "respectPdb": {
                            "type": "boolean",
                            "description": "During the migration, if the parameter is set to true we honor PDB during the nodes replacement.\n",
                            "example": false,
                            "default": true
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "respectRestrictScaleDown": {
                            "type": "boolean",
                            "description": "During the migration, if the parameter is set to true we honor Restrict Scale Down label during the nodes replacement.\n",
                            "example": true,
                            "default": false
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "shouldTerminateNodes": {
                            "type": "boolean",
                            "description": "If the parameter is set to true we will terminate the node after the migration has finished successfully. If the parameter is set to false we will leave the nodes.    example: true\n",
                            "default": true
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "shouldEvictStandalonePods": {
                            "type": "boolean",
                            "description": "If the parameter is set to true we will evict all standalone pods during the migration.\n",
                            "example": true,
                            "default": true
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "batchMinHealthyPercentage": {
                            "type": "integer",
                            "description": "Indicates the threshold of minimum healthy nodes in single batch. If the amount of healthy nodes in single batch is under the threshold, the migration will fail. If exists, the parameter value will be in range of 1-100. In case of null as value, the default value in the backend will be 50%. Value of param should represent the number in percentage (%) of the batch.\n",
                            "minimum": 1,
                            "maximum": 100,
                            "example": 100,
                            "default": 50
                          }
                        }
                      },
                      {
                        "type": "object",
                        "properties": {
                          "nodeNames": {
                            "type": "array",
                            "description": "List of node names to be migrated. Each identifier is a string. nodeNames can be null, and cannot be used together with nodePoolNames.\n",
                            "items": {
                              "type": "string",
                              "example": [
                                "aks-omnpbc2ebdb1-15563275-vmss00000g",
                                "aks-omnpe9429a2f-26725402-vmss000015"
                              ]
                            }
                          }
                        }
                      }
                    ]
                  },
                  {
                    "type": "object",
                    "title": "Migration with node pool names",
                    "allOf": [
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1migration/post/requestBody/content/application~1json/schema/oneOf/0/allOf/0"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1migration/post/requestBody/content/application~1json/schema/oneOf/0/allOf/1"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1migration/post/requestBody/content/application~1json/schema/oneOf/0/allOf/2"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1migration/post/requestBody/content/application~1json/schema/oneOf/0/allOf/3"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1migration/post/requestBody/content/application~1json/schema/oneOf/0/allOf/4"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1migration/post/requestBody/content/application~1json/schema/oneOf/0/allOf/5"
                      },
                      {
                        "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1migration/post/requestBody/content/application~1json/schema/oneOf/0/allOf/6"
                      },
                      {
                        "type": "object",
                        "properties": {
                          "nodePoolNames": {
                            "type": "array",
                            "description": "List of node pools to be migrated. Each node pool name is a string. nodePoolNames can be null, and cannot be used together with nodeNames.\n",
                            "items": {
                              "type": "string",
                              "example": [
                                "omnp35f6cccb",
                                "omnp55bd559b"
                              ]
                            }
                          }
                        }
                      }
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean AKS Create Migration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc/migration"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "allOf": [
                                  {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1migration/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                                  }
                                ]
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:migration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Migrations",
        "description": "Get status for all migrations of an Ocean cluster.\n",
        "operationId": "oceanAksMigrationsList",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AKS Get Migration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc/migration"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "The identifier of the migration.\n",
                                    "example": "scr-12345abc"
                                  },
                                  "oceanId": {
                                    "type": "string",
                                    "description": "The identifier of the ocean cluster.\n",
                                    "example": "o-12e31234"
                                  },
                                  "status": {
                                    "type": "string",
                                    "description": "The status of the migration.\n",
                                    "enum": [
                                      "IN_PROGRESS",
                                      "COMPLETED",
                                      "PARTLY_COMPLETED",
                                      "FAILED",
                                      "STOPPED"
                                    ],
                                    "example": "COMPLETED"
                                  },
                                  "currentBatch": {
                                    "type": "integer",
                                    "description": "The current batch being handled by the migration.\n",
                                    "example": 1
                                  },
                                  "numOfBatches": {
                                    "type": "integer",
                                    "description": "The total number of batches in the migration.\n",
                                    "example": 2
                                  },
                                  "comment": {
                                    "type": "string",
                                    "example": "migration comment."
                                  },
                                  "migrationProgress": {
                                    "type": "object",
                                    "properties": {
                                      "progressPercentage": {
                                        "type": "number",
                                        "example": 0
                                      },
                                      "detailedStatus": {
                                        "type": "object",
                                        "description": "An object containing detailed information about the progress of the migration.\n",
                                        "properties": {
                                          "oldNodes": {
                                            "type": "array",
                                            "description": "An array of objects containing detailed information about old nodes that are being replaced.\n",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "nodeName": {
                                                  "type": "string"
                                                },
                                                "nodePoolName": {
                                                  "type": "string"
                                                },
                                                "vngId": {
                                                  "type": "string"
                                                },
                                                "vngName": {
                                                  "type": "string"
                                                },
                                                "status": {
                                                  "description": "The status of the node according to the migration.\n",
                                                  "type": "string",
                                                  "enum": [
                                                    "REPLACED",
                                                    "TO_BE_REPLACED",
                                                    "COULD_NOT_BE_REPLACED",
                                                    "NOT_REPLACED_DUE_TO_PDB",
                                                    "DID_NOT_REPLACE",
                                                    "IN_PROGRESS"
                                                  ]
                                                },
                                                "podDetails": {
                                                  "type": "array",
                                                  "description": "An array of objects of all pods currently running on the node that is being replaced.\n",
                                                  "items": {
                                                    "type": "object",
                                                    "properties": {
                                                      "podName": {
                                                        "type": "string"
                                                      }
                                                    }
                                                  }
                                                },
                                                "runningPods": {
                                                  "type": "integer"
                                                }
                                              }
                                            },
                                            "example": [
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss00000q",
                                                "nodePoolName": "omnpbc2ebdb1",
                                                "status": "REPLACED",
                                                "podDetails": [
                                                  {
                                                    "podName": "pod-example-name1"
                                                  }
                                                ],
                                                "runningPods": 1
                                              },
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss000008",
                                                "nodePoolName": "omnpbc2ebdb1",
                                                "status": "TO_BE_REPLACED",
                                                "podDetails": [
                                                  {
                                                    "podName": "pod-example-name2"
                                                  },
                                                  {
                                                    "podName": "pod-example-name3"
                                                  }
                                                ],
                                                "runningPods": 2
                                              },
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss00000r",
                                                "nodePoolName": "omnpbc2ebdb1",
                                                "status": "COULD_NOT_BE_REPLACED",
                                                "podDetails": [
                                                  {
                                                    "podName": "pod-example-name4"
                                                  },
                                                  {
                                                    "podName": "pod-example-name5"
                                                  }
                                                ],
                                                "runningPods": 2
                                              },
                                              {
                                                "nodeName": "aks-omnpe9429a2f-26725402-vmss00000z",
                                                "nodePoolName": "omnpe9429a2f",
                                                "status": "NOT_REPLACED_DUE_TO_PDB",
                                                "podDetails": [
                                                  {
                                                    "podName": "pod-example-name6"
                                                  }
                                                ],
                                                "runningPods": 1
                                              },
                                              {
                                                "nodeName": "aks-omnp0c85c2c2-26833420-vmss000001",
                                                "nodePoolName": "omnp0c85c2c2",
                                                "status": "IN_PROGRESS",
                                                "podDetails": [
                                                  {
                                                    "podName": "pod-example-name7"
                                                  }
                                                ],
                                                "runningPods": 1
                                              },
                                              {
                                                "nodeName": "aks-omnp0c85c2c2-26833420-vmss000003",
                                                "nodePoolName": "omnp0c85c2c2",
                                                "status": "DID_NOT_REPLACE",
                                                "podDetails": [
                                                  {
                                                    "podName": "pod-example-name8"
                                                  }
                                                ],
                                                "runningPods": 1
                                              }
                                            ]
                                          },
                                          "scaleNodePools": {
                                            "type": "array",
                                            "description": "An array of objects containing detailed information about all node pools that were scaled during the migration process.\n",
                                            "items": {
                                              "type": "object",
                                              "properties": {
                                                "nodePoolName": {
                                                  "type": "string"
                                                },
                                                "newNodes": {
                                                  "type": "integer"
                                                },
                                                "vngId": {
                                                  "type": "string"
                                                },
                                                "vngName": {
                                                  "type": "string"
                                                },
                                                "migrationStatus": {
                                                  "description": "The status of the node pool's scaling operation according to the migration.\n",
                                                  "type": "string",
                                                  "enum": [
                                                    "SCALING",
                                                    "COMPLETED",
                                                    "FAILED",
                                                    "PARTIAL_SUCCESS"
                                                  ]
                                                }
                                              }
                                            },
                                            "example": [
                                              {
                                                "nodePoolName": "omnp12340",
                                                "newNodes": 2,
                                                "vngId": "vng-1234",
                                                "vngName": "vng2",
                                                "status": "Scaling"
                                              },
                                              {
                                                "nodePoolName": "omnp12345",
                                                "newNodes": 10,
                                                "vngId": "vng-1234",
                                                "vngName": "vng2",
                                                "status": "Completed"
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    }
                                  },
                                  "respectPdb": {
                                    "type": "boolean",
                                    "example": true
                                  },
                                  "respectRestrictScaleDown": {
                                    "type": "boolean",
                                    "example": false
                                  },
                                  "shouldTerminateNodes": {
                                    "type": "boolean",
                                    "example": true
                                  },
                                  "shouldEvictStandalonePods": {
                                    "type": "boolean",
                                    "example": false
                                  },
                                  "batchMinHealthyPercentage": {
                                    "type": "integer",
                                    "example": 70
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "description": "The creation timestamp of the migration.\n",
                                    "example": "2019-03-24T15:46:09.000Z"
                                  },
                                  "erredAt": {
                                    "type": "string",
                                    "description": "The timestamp of the migration error.\n",
                                    "example": "2019-03-24T15:46:09.000Z"
                                  },
                                  "stoppedAt": {
                                    "type": "string",
                                    "description": "The stopping timestamp of the migration.\n",
                                    "example": "2019-03-24T15:46:09.000Z"
                                  },
                                  "completedAt": {
                                    "type": "string",
                                    "description": "The completion timestamp of the migration.\n",
                                    "example": "2019-03-24T15:46:09.000Z"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:ocean:workloadMigration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}/migration/{migrationId}": {
      "summary": "Ocean for AKS",
      "get": {
        "summary": "Get Migration",
        "description": "Get status for a migration of an Ocean cluster.\n",
        "operationId": "oceanAksGetMigration",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "in": "path",
            "name": "migrationId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "scr-12345abc",
            "description": "Ocean cluster workload migration identifier.\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AKS Get Migration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc/migration/scr-12345abc"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1migration/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:ocean:workloadMigration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}/migration/{migrationId}/stop": {
      "summary": "Ocean for AKS",
      "put": {
        "summary": "Stop Migration",
        "description": "Stop a migration of an Ocean cluster.\n\n*Performing the request will stop the next batch in a migration.*\n",
        "operationId": "oceanAksMigrationStop",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1migration~1%7BmigrationId%7D/get/parameters/2"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean AKS Stop Migration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc/migration/scr-12345abc"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "allOf": [
                                  {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1migration/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                                  },
                                  {
                                    "type": "object",
                                    "properties": {
                                      "status": {
                                        "example": "STOPPED"
                                      },
                                      "progress": {
                                        "example": {
                                          "detailedStatus": {
                                            "progressPercentage": 50,
                                            "oldNodes": [
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss00000q",
                                                "status": "REPLACED"
                                              },
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss000008",
                                                "status": "DID_NOT_REPLACE"
                                              },
                                              {
                                                "nodeName": "aks-omnpbc2ebdb1-15563275-vmss00000r",
                                                "status": "DID_NOT_REPLACE"
                                              },
                                              {
                                                "nodeName": "aks-omnpe9429a2f-26725402-vmss00000z",
                                                "status": "REPLACED"
                                              },
                                              {
                                                "nodeName": "aks-omnp0c85c2c2-26833420-vmss000001",
                                                "status": "REPLACED"
                                              },
                                              {
                                                "nodeName": "aks-omnp0c85c2c2-26833420-vmss000003",
                                                "status": "DID_NOT_REPLACE"
                                              }
                                            ]
                                          }
                                        }
                                      }
                                    }
                                  }
                                ]
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:ocean:workloadMigration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}/log": {
      "summary": "Ocean for AKS",
      "get": {
        "summary": "Fetch Elastilogs",
        "description": "Fetch the log of an Ocean cluster.\n",
        "operationId": "oceanAKSClusterFetchLog",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1mcs~1ecs~1cluster~1%7BclusterName%7D~1costs/get/parameters/2"
          },
          {
            "$ref": "#/paths/~1mcs~1ecs~1cluster~1%7BclusterName%7D~1costs/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1log/get/parameters/4"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1log/get/parameters/5"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D~1log/get/parameters/6"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Get Log Response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "request": {
                      "type": "object",
                      "description": "Original request properties\n",
                      "properties": {
                        "id": {
                          "type": "string",
                          "example": "3213f42e-455e-4801-a185-cd3eb65fac5f",
                          "description": "Unique identifier associated with this request\n"
                        },
                        "url": {
                          "type": "string",
                          "example": "/ocean/azure/np/cluster/o-e0a2bd7c/log?fromDate=2020-10-06&toDate=2020-10-08&severity=ALL&limit=500",
                          "description": "The URL that was used for the request\n"
                        },
                        "method": {
                          "type": "string",
                          "example": "GET",
                          "description": "The HTTP **METHOD** used for the request\n"
                        },
                        "timestamp": {
                          "type": "string",
                          "example": "2020-10-05T16:20:38.579Z",
                          "description": "When the request was received by Spot\n"
                        }
                      }
                    },
                    "response": {
                      "type": "object",
                      "description": "Response payload that includes status, type, and any relevant data.\n",
                      "properties": {
                        "status": {
                          "type": "object",
                          "properties": {
                            "code": {
                              "type": "integer",
                              "example": "200",
                              "description": "HTTP status code assigned to this response.\n"
                            },
                            "message": {
                              "type": "string",
                              "example": "OK",
                              "description": "HTTP status message for the respective status code.\n"
                            }
                          }
                        },
                        "kind": {
                          "type": "string",
                          "example": "spotinst:ocean:azure:k8s:cluster:logs"
                        },
                        "items": {
                          "type": "array",
                          "description": "Array of data objects\n",
                          "items": {
                            "type": "object",
                            "properties": {
                              "message": {
                                "type": "string"
                              },
                              "severity": {
                                "type": "string"
                              },
                              "createdAt": {
                                "type": "string"
                              }
                            }
                          },
                          "example": [
                            {
                              "message": "Ocean o-e0a2bd7c successfully created.",
                              "severity": "INFO",
                              "createdAt": "2020-10-07T09:51:12.000Z"
                            }
                          ]
                        },
                        "count": {
                          "type": "integer",
                          "example": "1"
                        }
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}/autoUpgrade": {
      "summary": "Ocean for AKS",
      "get": {
        "summary": "Get all auto-upgrades",
        "description": "Returns a list of all auto-upgrade operations for the specified Ocean AKS cluster.\n",
        "operationId": "oceanAksGetAutoUpgrades",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "List of auto upgrade.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "oceanId": {
                        "type": "string",
                        "description": "The identifier of the ocean cluster being upgraded.\n",
                        "example": "o-12e31234"
                      },
                      "scope": {
                        "type": "string",
                        "enum": [
                          "patch"
                        ],
                        "example": "Cluster"
                      },
                      "rollId": {
                        "type": "string",
                        "description": "The identifier of the cluster roll (if created).\n",
                        "example": "scr-12345abc"
                      },
                      "systemNodePoolsOperationId": {
                        "type": "string",
                        "description": "The identifier of the system node pool upgrade operation (if created).\n",
                        "example": "snpo-12345abc"
                      },
                      "oldVersion": {
                        "type": "string",
                        "description": "The old version of the cluster's control plane.\n",
                        "example": "1.0.10"
                      },
                      "newVersion": {
                        "type": "string",
                        "description": "The newest available version.\n",
                        "example": "1.0.15"
                      },
                      "status": {
                        "type": "string",
                        "description": "The status of the upgrade.\n",
                        "enum": [
                          "START",
                          "UPGRADE_CONTROL_PLANE",
                          "VALIDATE_CONTROL_PLANE_UPGRADE",
                          "CREATE_SYSTEM_NODE_POOLS_UPDATE",
                          "CREATE_ROLL",
                          "AWAIT_NODE_POOLS_UPGRADE",
                          "COMPLETED",
                          "PARTIALLY_COMPLETED",
                          "FAILED"
                        ],
                        "example": "COMPLETED"
                      },
                      "description": {
                        "type": "string",
                        "description": "The description of the upgrade, including any errors or issues found during the process.\n",
                        "example": "Failed to upgrade the control plane to the latest patch version. Could not create roll."
                      },
                      "createdAt": {
                        "type": "string",
                        "description": "The creation timestamp of the upgrade.\n",
                        "example": "2019-03-24T15:46:09.000Z"
                      }
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "summary": "Initiate Auto upgrade",
        "description": "Update the Ocean AKS cluster's VNGs with the latest version of the control plane's version after upgrading by specifying the scope.  Performing this request will update the VNGs with a new version if available and run a cluster roll if set.  If the response is successful, the old and new versions will be included in the response along with the updated VNGs.  If a cluster roll is set in the request, the first response for a successful request will indicate the start of a roll.  In order to check the status of the roll, you can use the GET Roll API.\n",
        "operationId": "oceanAksAutoUpgradeInit",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1aks~1import/post/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1aks~1import/post/parameters/2"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "upgradeConfig"
                    ],
                    "properties": {
                      "upgradeConfig": {
                        "type": "object",
                        "description": "The Configuration for scheduling automatic upgrades of your cluster to ensure it stays updated with the latest version.\n",
                        "title": "Upgrade Config",
                        "properties": {
                          "applyRoll": {
                            "type": "boolean",
                            "description": "When set to True, a cluster roll will be initiated if a new version is available to upgrade in the dedicated virtual node groups.\n",
                            "example": true
                          },
                          "scopeVersion": {
                            "type": "string",
                            "description": "The scope of the upgrade version.\n",
                            "enum": [
                              "patch"
                            ]
                          },
                          "rollParameters": {
                            "type": "object",
                            "description": "The parameters of the cluster roll that will be initiated.\n",
                            "properties": {
                              "batchSizePercentage": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 100,
                                "description": "The percentage of the cluster that will be rolled at each batch.\n",
                                "example": 20
                              },
                              "comment": {
                                "type": "string",
                                "description": "A comment to be added to the cluster roll.\n",
                                "example": "Auto-upgrade the control plane to the latest patch version."
                              },
                              "respectPdb": {
                                "type": "boolean",
                                "description": "During the roll, if the parameter is set to true we honor PDB during the instance replacement.\n",
                                "example": true
                              },
                              "respectRestrictScaleDown": {
                                "type": "boolean",
                                "description": "During the roll, if the parameter is set to true we honor Restrict Scale Down label during the nodes replacement.\n",
                                "example": true
                              },
                              "batchMinHealthyPercentage": {
                                "type": "integer",
                                "minimum": 1,
                                "maximum": 100,
                                "description": "The minimum percentage of the scaled nodes that should be healthy at each batch.\n",
                                "example": 80
                              }
                            }
                          },
                          "upgradeSystemNodePools": {
                            "type": "boolean",
                            "description": "When set to True, the system node pools will be updated with the new Kubernetes version as part of the upgrade.\n",
                            "example": true
                          },
                          "systemNodePools": {
                            "type": "array",
                            "description": "List of node pool names to be updated with the new Kubernetes version as part of the upgrade.\n",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "userpool",
                              "systemNp1"
                            ]
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean AKS Create Auto Upgrade",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc/autoUpgrade"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "allOf": [
                                  {
                                    "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1autoUpgrade/get/responses/200/content/application~1json/schema/items"
                                  }
                                ]
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:autoUpgrade"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}/systemNodePool/upgradeVersion": {
      "summary": "Ocean for AKS",
      "post": {
        "summary": "Start system node pool upgrade",
        "description": "Initiates a Kubernetes version upgrade for specified system node pools in an Ocean AKS cluster.\n",
        "operationId": "oceanAksStartSystemNodePoolUpgrade",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "oceanId",
                  "scope",
                  "systemNodePoolNames"
                ],
                "properties": {
                  "oceanId": {
                    "type": "string",
                    "description": "The ID of the Ocean AKS cluster.",
                    "example": "o-12345abc"
                  },
                  "scope": {
                    "type": "string",
                    "enum": [
                      "PATCH"
                    ],
                    "description": "The scope of the upgrade operation. Currently, only \"PATCH\" is supported.",
                    "example": "PATCH"
                  },
                  "systemNodePoolNames": {
                    "type": "array",
                    "description": "List of system node pool names to be upgraded.",
                    "items": {
                      "type": "string",
                      "example": [
                        "np1",
                        "np2"
                      ]
                    },
                    "minItems": 1
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean AKS System Node Pool Upgrade Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/np/cluster/o-12345abc/systemNodePool/upgradeVersion/snpo-1234abc"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "operationId": {
                                    "type": "string",
                                    "description": "The unique identifier for the system node pool upgrade operation.\n",
                                    "example": "op-12345abc"
                                  },
                                  "upgradedNodePoolNames": {
                                    "type": "array",
                                    "description": "List of system node pool names that were successfully upgraded.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "np1",
                                      "np2"
                                    ]
                                  },
                                  "inProgressNodePoolNames": {
                                    "type": "array",
                                    "description": "List of system node pool names that are currently in progress of being upgraded.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "np3"
                                    ]
                                  },
                                  "failedNodePoolNames": {
                                    "type": "array",
                                    "description": "List of system node pool names that failed to upgrade.\n",
                                    "items": {
                                      "type": "string"
                                    },
                                    "example": [
                                      "np4"
                                    ]
                                  },
                                  "newVersion": {
                                    "type": "string",
                                    "description": "The new version to which the system node pools are being upgraded.\n",
                                    "example": "1.28.3"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:azure:np:systemNodePoolUpgrade"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}/systemNodePool/upgradeVersion/{systemNodePoolsOperationId}": {
      "summary": "Ocean for AKS",
      "get": {
        "summary": "Get system node pool upgrade operation",
        "description": "Returns the status of a specific system node pool upgrade operation for the specified Ocean AKS cluster.\n",
        "operationId": "oceanAksGetSystemNodePoolUpgradeOperation",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "in": "path",
            "name": "systemNodePoolsOperationId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "snpo-12345abc",
            "description": "System node pools operation identifier.\n"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1ocean~1azure~1np~1cluster~1%7BoceanClusterId%7D~1systemNodePool~1upgradeVersion/post/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/k8s/cluster/{oceanClusterId}/aggregatedCosts": {
      "post": {
        "summary": "Get Cluster Aggregated Detailed Costs",
        "description": "Provides Kubernetes cluster resource usage and costs over a time interval which can be grouped and/or filtered by label/annotaion,\\\nfor example - application name (webapp, backend), environment (production, staging), version etc.\\\nThe response will contain a breakdown of the cluster resource costs($) in terms of compute (CPU, memory) and storage.\nThe response will group the cluster usage costs based on preselected default of application namespace or user selected label or annotation.\\\nWithin the group, resource costs are broken down per resource kind (Deployment, DaemonSet etc.).\n\nTime Rounding Down: The CostAnalysis API applies rounding down to the hours provided during the call.\\\nFor example, the value 1707004799099 (In GMT) representing Saturday, February 3, 2024, 23:59:59.099 is rounded down to Saturday, February 3, 2024, 23:00:00.000, resulting in the omission of one hour of cost.\n",
        "operationId": "oceanAksK8sClusterAggregatedDetailedCosts",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "endTime",
                      "startTime"
                    ],
                    "properties": {
                      "startTime": {
                        "type": "string",
                        "example": "2023-07-20T11:35:01.745Z",
                        "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "endTime": {
                        "type": "string",
                        "example": "2023-07-22T11:30:01.745Z",
                        "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "groupBy": {
                        "type": "string",
                        "description": "The parameter we want to group the costs by.\n",
                        "default": "namespace",
                        "example": "namespace.label.env",
                        "enum": [
                          "namespace",
                          "namespace.label.${labelKey}",
                          "resource.label.${labelKey}",
                          "resource.annotation.${annotationKey}",
                          "namespace.annotation.${annotationKey}"
                        ]
                      },
                      "filter": {
                        "type": "object",
                        "description": "Describe how to filter the costs. Optional field.",
                        "required": [
                          "scope",
                          "conditions"
                        ],
                        "properties": {
                          "scope": {
                            "type": "string",
                            "enum": [
                              "namespace",
                              "resource"
                            ]
                          },
                          "conditions": {
                            "type": "object",
                            "required": [
                              "anyMatch"
                            ],
                            "properties": {
                              "anyMatch": {
                                "type": "array",
                                "description": "Array of conditions set that OR operator is applied between them.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "allMatch"
                                  ],
                                  "properties": {
                                    "allMatch": {
                                      "type": "array",
                                      "description": "Array of conditions that AND operator is applied between them.\\\nFor example, (label env equals prod) AND (label app exists)\n",
                                      "items": {
                                        "type": "object",
                                        "description": "The basic expression of a condition",
                                        "required": [
                                          "type",
                                          "key",
                                          "operator"
                                        ],
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "enum": [
                                              "label",
                                              "annotation"
                                            ]
                                          },
                                          "key": {
                                            "type": "string",
                                            "description": "May be any string, but shouldn't be empty.\n",
                                            "example": "env"
                                          },
                                          "operator": {
                                            "type": "string",
                                            "enum": [
                                              "equals",
                                              "notEquals",
                                              "exists",
                                              "notExists"
                                            ]
                                          },
                                          "value": {
                                            "type": "string",
                                            "description": "Required whenever the operator is \"equals\" or \"notEquals\".\n",
                                            "example": "prod"
                                          }
                                        }
                                      }
                                    }
                                  }
                                },
                                "example": [
                                  {
                                    "allMatch": [
                                      {
                                        "type": "label",
                                        "key": "env",
                                        "operator": "equals",
                                        "value": "prod"
                                      },
                                      {
                                        "type": "label",
                                        "key": "app",
                                        "operator": "exists"
                                      }
                                    ]
                                  },
                                  {
                                    "allMatch": [
                                      {
                                        "type": "annotation",
                                        "key": "meta.data",
                                        "operator": "exists"
                                      }
                                    ]
                                  }
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Cluster Aggregated Detailed Costs Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/k8s/cluster/o-abcd1234/aggregatedCosts"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "result": {
                                    "type": "object",
                                    "properties": {
                                      "totalForDuration": {
                                        "type": "object",
                                        "properties": {
                                          "startTime": {
                                            "type": "string",
                                            "example": "2023-07-20T11:35:01.745Z",
                                            "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                          },
                                          "endTime": {
                                            "type": "string",
                                            "example": "2023-07-22T11:30:01.745Z",
                                            "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                          },
                                          "summary": {
                                            "type": "object",
                                            "properties": {
                                              "total": {
                                                "type": "number",
                                                "example": 41772.882658036,
                                                "format": "float",
                                                "description": "The total costs of cluster in a given time range"
                                              },
                                              "compute": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 40668.1299631538,
                                                    "format": "float",
                                                    "description": "The total compute costs of the cluster in a given time range"
                                                  },
                                                  "workloads": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 40668.1299631538,
                                                        "format": "float"
                                                      }
                                                    }
                                                  },
                                                  "headroom": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 0,
                                                        "format": "float"
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "storage": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 1104.7526948819,
                                                    "format": "float",
                                                    "description": "The total storage costs of the cluster in given time range"
                                                  },
                                                  "block": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 1104.7526948819,
                                                        "format": "float"
                                                      },
                                                      "azureDisk": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 1104.7526948819,
                                                            "format": "float"
                                                          }
                                                        }
                                                      },
                                                      "osDisk": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 0,
                                                            "format": "float"
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "networking": {
                                                "type": "object",
                                                "properties": {
                                                  "totalCost": {
                                                    "type": "number",
                                                    "example": 0.00278988928,
                                                    "description": "The total costs of cluster's networking in a given time range"
                                                  },
                                                  "totalUsage": {
                                                    "type": "number",
                                                    "example": 0.03154064,
                                                    "description": "The total usages of cluster's networking in a given time range"
                                                  },
                                                  "total": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.00139494464
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.01577032
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.00139494464
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.01577032
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "internet": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "interAZ": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "intraAZ": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "interRegion": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          },
                                          "detailedCosts": {
                                            "type": "object",
                                            "properties": {
                                              "groupedBy": {
                                                "type": "string",
                                                "example": "n.l.name"
                                              },
                                              "aggregations": {
                                                "type": "object",
                                                "description": "Contains aggregation for each group by value.\n",
                                                "additionalProperties": {
                                                  "type": "object",
                                                  "description": "For example - if group by is namespace so each property name will a namesapce in the cluster.",
                                                  "properties": {
                                                    "summary": {
                                                      "type": "object",
                                                      "properties": {
                                                        "total": {
                                                          "type": "number",
                                                          "example": 425.23778,
                                                          "format": "float"
                                                        },
                                                        "compute": {
                                                          "type": "object",
                                                          "properties": {
                                                            "total": {
                                                              "type": "number",
                                                              "example": 125.23778,
                                                              "format": "float"
                                                            }
                                                          }
                                                        },
                                                        "storage": {
                                                          "type": "object",
                                                          "properties": {
                                                            "total": {
                                                              "type": "number",
                                                              "example": 300,
                                                              "format": "float"
                                                            },
                                                            "block": {
                                                              "type": "object",
                                                              "properties": {
                                                                "total": {
                                                                  "type": "number",
                                                                  "example": 300,
                                                                  "format": "float"
                                                                },
                                                                "azureDisk": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "total": {
                                                                      "type": "number",
                                                                      "example": 300,
                                                                      "format": "float"
                                                                    }
                                                                  }
                                                                },
                                                                "osDisk": {
                                                                  "type": "object",
                                                                  "properties": {
                                                                    "total": {
                                                                      "type": "number",
                                                                      "example": 0,
                                                                      "format": "float"
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    },
                                                    "resources": {
                                                      "type": "array",
                                                      "items": {
                                                        "type": "object",
                                                        "properties": {
                                                          "metadata": {
                                                            "type": "object",
                                                            "properties": {
                                                              "name": {
                                                                "type": "string",
                                                                "example": "k8s-events"
                                                              },
                                                              "type": {
                                                                "type": "string",
                                                                "example": "Deployment"
                                                              },
                                                              "namespace": {
                                                                "type": "string",
                                                                "example": "kube-system"
                                                              }
                                                            }
                                                          },
                                                          "total": {
                                                            "type": "number",
                                                            "example": 1.655635222,
                                                            "format": "float"
                                                          },
                                                          "compute": {
                                                            "type": "object",
                                                            "properties": {
                                                              "total": {
                                                                "type": "number",
                                                                "example": 1.4213600158,
                                                                "format": "float"
                                                              }
                                                            }
                                                          },
                                                          "storage": {
                                                            "type": "object",
                                                            "properties": {
                                                              "total": {
                                                                "type": "number",
                                                                "example": 0.2342752062,
                                                                "format": "float"
                                                              },
                                                              "block": {
                                                                "type": "object",
                                                                "properties": {
                                                                  "total": {
                                                                    "type": "number",
                                                                    "example": 0.2342752062,
                                                                    "format": "float"
                                                                  },
                                                                  "azureDisk": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "total": {
                                                                        "type": "number",
                                                                        "example": 0,
                                                                        "format": "float"
                                                                      }
                                                                    }
                                                                  },
                                                                  "osDisk": {
                                                                    "type": "object",
                                                                    "properties": {
                                                                      "total": {
                                                                        "type": "number",
                                                                        "example": 0.2342752062,
                                                                        "format": "float"
                                                                      }
                                                                    }
                                                                  }
                                                                }
                                                              }
                                                            }
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "ocean:k8s:cluster:aggregatedCosts:detailed"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/k8s/cluster/{oceanClusterId}/aggregatedCosts/summary": {
      "post": {
        "summary": "Get Cluster Aggregated Summary Costs",
        "description": "Provides Kubernetes cluster summary usage and costs over a time interval which can be grouped and/or filtered by label/annotaion,\\\nfor example - application name (webapp, backend), environment (production, staging), version etc.\\\nThe response will contain a breakdown of the cluster resource costs($) in terms of compute (CPU, memory), storage (block, file, rootVolume).\nThe response will group the cluster usage costs based on preselected default of application namespace or user selected label or annotation.\n\nTime Rounding Down: The CostAnalysis API applies rounding down to the hours provided during the call.\\\nFor example, the value 1707004799099 (In GMT) representing Saturday, February 3, 2024, 23:59:59.099 is rounded down to Saturday, February 3, 2024, 23:00:00.000, resulting in the omission of one hour of cost.\n",
        "operationId": "oceanAksK8sClusterAggregatedSummaryCosts",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "endTime",
                      "startTime"
                    ],
                    "properties": {
                      "startTime": {
                        "type": "string",
                        "example": "2023-07-20T11:35:01.745Z",
                        "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "endTime": {
                        "type": "string",
                        "example": "2023-07-22T11:30:01.745Z",
                        "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "groupBy": {
                        "type": "string",
                        "description": "The parameter we want to group the costs by.\n",
                        "default": "namespace",
                        "example": "namespace.label.env",
                        "enum": [
                          "namespace",
                          "namespace.label.${labelKey}",
                          "resource.label.${labelKey}",
                          "resource.annotation.${annotationKey}",
                          "namespace.annotation.${annotationKey}"
                        ]
                      },
                      "filter": {
                        "type": "object",
                        "description": "Describe how to filter the costs. Optional field.",
                        "required": [
                          "scope",
                          "conditions"
                        ],
                        "properties": {
                          "scope": {
                            "type": "string",
                            "enum": [
                              "namespace",
                              "resource"
                            ]
                          },
                          "conditions": {
                            "type": "object",
                            "required": [
                              "anyMatch"
                            ],
                            "properties": {
                              "anyMatch": {
                                "type": "array",
                                "description": "Array of conditions set that OR operator is applied between them.\n",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "allMatch"
                                  ],
                                  "properties": {
                                    "allMatch": {
                                      "type": "array",
                                      "description": "Array of conditions that AND operator is applied between them.\\\nFor example, (label env equals prod) AND (label app exists)\n",
                                      "items": {
                                        "type": "object",
                                        "description": "The basic expression of a condition",
                                        "required": [
                                          "type",
                                          "key",
                                          "operator"
                                        ],
                                        "properties": {
                                          "type": {
                                            "type": "string",
                                            "enum": [
                                              "label",
                                              "annotation"
                                            ]
                                          },
                                          "key": {
                                            "type": "string",
                                            "description": "May be any string, but shouldn't be empty.\n",
                                            "example": "env"
                                          },
                                          "operator": {
                                            "type": "string",
                                            "enum": [
                                              "equals",
                                              "notEquals",
                                              "exists",
                                              "notExists"
                                            ]
                                          },
                                          "value": {
                                            "type": "string",
                                            "description": "Required whenever the operator is \"equals\" or \"notEquals\".\n",
                                            "example": "prod"
                                          }
                                        }
                                      }
                                    }
                                  }
                                },
                                "example": [
                                  {
                                    "allMatch": [
                                      {
                                        "type": "label",
                                        "key": "env",
                                        "operator": "equals",
                                        "value": "prod"
                                      },
                                      {
                                        "type": "label",
                                        "key": "app",
                                        "operator": "exists"
                                      }
                                    ]
                                  },
                                  {
                                    "allMatch": [
                                      {
                                        "type": "annotation",
                                        "key": "meta.data",
                                        "operator": "exists"
                                      }
                                    ]
                                  }
                                ]
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Cluster Aggregated Summary Costs Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/azure/k8s/cluster/o-abcd1234/aggregatedCosts/summary"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "result": {
                                    "type": "object",
                                    "properties": {
                                      "totalForDuration": {
                                        "type": "object",
                                        "properties": {
                                          "startTime": {
                                            "type": "string",
                                            "example": "2023-07-20T11:35:01.745Z",
                                            "description": "Beginning date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                          },
                                          "endTime": {
                                            "type": "string",
                                            "example": "2023-07-22T11:30:01.745Z",
                                            "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                                          },
                                          "summary": {
                                            "type": "object",
                                            "properties": {
                                              "total": {
                                                "type": "number",
                                                "example": 41772.882658035785,
                                                "format": "float",
                                                "description": "The total costs of cluster in a given time range"
                                              },
                                              "compute": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 40668.1299631538,
                                                    "format": "float",
                                                    "description": "The total compute costs of the cluster in a given time range"
                                                  },
                                                  "workloads": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 39882.13803327978,
                                                        "format": "float"
                                                      }
                                                    }
                                                  },
                                                  "headroom": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 0,
                                                        "format": "float"
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "storage": {
                                                "type": "object",
                                                "properties": {
                                                  "total": {
                                                    "type": "number",
                                                    "example": 1104.7526948819868,
                                                    "format": "float",
                                                    "description": "The total storage costs of the cluster in given time range"
                                                  },
                                                  "block": {
                                                    "type": "object",
                                                    "properties": {
                                                      "total": {
                                                        "type": "number",
                                                        "example": 1104.7526948819868,
                                                        "format": "float"
                                                      },
                                                      "azureDisk": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 1104.7526948819868,
                                                            "format": "float"
                                                          }
                                                        }
                                                      },
                                                      "osDisk": {
                                                        "type": "object",
                                                        "properties": {
                                                          "total": {
                                                            "type": "number",
                                                            "example": 0,
                                                            "format": "float"
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              },
                                              "networking": {
                                                "type": "object",
                                                "properties": {
                                                  "totalCost": {
                                                    "type": "number",
                                                    "example": 0.00278988928,
                                                    "description": "The total costs of cluster's networking in a given time range"
                                                  },
                                                  "totalUsage": {
                                                    "type": "number",
                                                    "example": 0.03154064,
                                                    "description": "The total usages of cluster's networking in a given time range"
                                                  },
                                                  "total": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.00139494464
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.01577032
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.00139494464
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.01577032
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "internet": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "interAZ": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "intraAZ": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.000693972
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.0077108
                                                          }
                                                        }
                                                      }
                                                    }
                                                  },
                                                  "interRegion": {
                                                    "type": "object",
                                                    "properties": {
                                                      "in": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      },
                                                      "out": {
                                                        "type": "object",
                                                        "properties": {
                                                          "cost": {
                                                            "type": "number",
                                                            "example": 0.0000035003200000000003
                                                          },
                                                          "usage": {
                                                            "type": "number",
                                                            "example": 0.000175016
                                                          }
                                                        }
                                                      }
                                                    }
                                                  }
                                                }
                                              }
                                            }
                                          }
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "ocean:k8s:cluster:aggregatedCosts:summary"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/azure/np/cluster/{oceanClusterId}/nodes": {
      "get": {
        "summary": "Get Cluster Nodes",
        "description": "Get nodes data of an Ocean AKS cluster.\n",
        "operationId": "oceanAKSGetNodes",
        "tags": [
          "Ocean AKS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "virtualNodeGroupId",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "vng-12345abc",
            "description": "Filter nodes by Ocean Virtual Node Group identifier."
          },
          {
            "in": "query",
            "name": "nodeName",
            "schema": {
              "type": "string"
            },
            "example": "vm-123",
            "description": "Get a specific node by instance id."
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Kubernetes AKS Nodes Data Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/azure/ocean/np/aks/cluster/o-7068d7a8/nodes"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Azure Ocean Kubernetes node data",
                                "description": "Node data of Ocean AKS cluster.",
                                "properties": {
                                  "nodeId": {
                                    "type": "string",
                                    "example": "550e8400-e29b-41d4-a716-446655440000",
                                    "description": "The unique identifier of this node.\n"
                                  },
                                  "nodeName": {
                                    "type": "string",
                                    "example": "node-abc123def456",
                                    "description": "The kubernetes node name.\n"
                                  },
                                  "nodePoolName": {
                                    "type": "string",
                                    "example": "default-pool",
                                    "description": "The Azure node pool name.\n"
                                  },
                                  "virtualNodeGroupId": {
                                    "type": "string",
                                    "example": "vng-abc123def456",
                                    "description": "The node's Virtual Node Group ID (only for Ocean-managed nodes).\n"
                                  },
                                  "virtualNodeGroupName": {
                                    "type": "string",
                                    "example": "user-pool",
                                    "description": "The node's Virtual Node Group name (only for Ocean-managed nodes).\n"
                                  },
                                  "vmSize": {
                                    "type": "string",
                                    "example": "Standard_D8as_v6",
                                    "description": "The Azure VM size of this node.\n"
                                  },
                                  "lifeCycle": {
                                    "type": "string",
                                    "enum": [
                                      "Spot",
                                      "OnDemand"
                                    ],
                                    "example": "Spot",
                                    "description": "The lifecycle of this node (Spot or OnDemand).\n"
                                  },
                                  "availabilityZone": {
                                    "type": "string",
                                    "example": "1",
                                    "description": "The Azure availability zone of this node.\n"
                                  },
                                  "commitmentType": {
                                    "type": "string",
                                    "enum": [
                                      "reservation",
                                      "savingsPlan",
                                      "pay-as-you-go",
                                      "none"
                                    ],
                                    "example": "reservations",
                                    "description": "The commitment type of this node.\n"
                                  },
                                  "ipAddress": {
                                    "type": "string",
                                    "example": "10.0.0.1",
                                    "description": "The IP address of this node.\n"
                                  },
                                  "osImage": {
                                    "type": "string",
                                    "example": "Ubuntu",
                                    "description": "The OS image of this node.\n"
                                  },
                                  "operatingSystem": {
                                    "type": "string",
                                    "enum": [
                                      "linux",
                                      "windows"
                                    ],
                                    "example": "linux",
                                    "description": "The operating system of this node.\n"
                                  },
                                  "architecture": {
                                    "type": "string",
                                    "example": "amd64",
                                    "description": "The architecture of this node.\n"
                                  },
                                  "nodeStatus": {
                                    "type": "string",
                                    "enum": [
                                      "TRUE",
                                      "FALSE",
                                      "UNKNOWN"
                                    ],
                                    "example": "TRUE",
                                    "description": "The status of this node.\n"
                                  },
                                  "registrationStatus": {
                                    "type": "string",
                                    "enum": [
                                      "Registered",
                                      "Unregistered",
                                      "Unknown"
                                    ],
                                    "example": "Registered",
                                    "description": "The registration status of this node.\n"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "format": "date-time",
                                    "example": "2026-01-15T10:30:45.000Z",
                                    "description": "When was this node's instance was created at.\n"
                                  },
                                  "labels": {
                                    "type": "object",
                                    "additionalProperties": {
                                      "type": "string"
                                    },
                                    "description": "Kubernetes labels assigned to this node.\n",
                                    "example": {
                                      "pool-type": "default-pool",
                                      "kubernetes.io/hostname": "node-abc123def456"
                                    }
                                  },
                                  "taints": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    },
                                    "description": "Kubernetes taints assigned to this node.\n",
                                    "example": [
                                      "CriticalAddonsOnly=true:NO_SCHEDULE"
                                    ]
                                  },
                                  "workloadRequestedMilliCpu": {
                                    "type": "number",
                                    "example": 0,
                                    "description": "The amount of milli cpus requested by the kubernetes workload.\n"
                                  },
                                  "workloadRequestedMemoryInMiB": {
                                    "type": "number",
                                    "example": 0,
                                    "description": "The amount of memory in MiB requested by the kubernetes workload.\n"
                                  },
                                  "workloadRequestedGpu": {
                                    "type": "number",
                                    "example": 0,
                                    "description": "The amount of gpus requested by the kubernetes workload.\n"
                                  },
                                  "headroomRequestedMilliCpu": {
                                    "type": "number",
                                    "example": 0,
                                    "description": "The amount of milli cpus saved for headroom.\n"
                                  },
                                  "headroomRequestedMemoryInMiB": {
                                    "type": "number",
                                    "example": 0,
                                    "description": "The amount of memory in MiB saved for headroom.\n"
                                  },
                                  "headroomRequestedGpu": {
                                    "type": "number",
                                    "example": 0,
                                    "description": "The amount of gpus saved for headroom.\n"
                                  },
                                  "allocatableMilliCpu": {
                                    "type": "number",
                                    "example": 0,
                                    "description": "The amount of allocatable milli cpus as registered in kubernetes.\n"
                                  },
                                  "allocatableMemoryInMiB": {
                                    "type": "number",
                                    "example": 0,
                                    "description": "The amount of allocatable memory in MiB as registered in kubernetes.\n"
                                  },
                                  "allocatableGpu": {
                                    "type": "number",
                                    "example": 0,
                                    "description": "The amount of allocatable gpus as registered in kubernetes.\n"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:azure:ocean:clusterNode"
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Number of nodes returned"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/launchSpec/{launchSpecId}/launchNodes": {
      "put": {
        "summary": "Launch Nodes in VNG",
        "description": "Launch nodes in Virtual Node Group.\n",
        "operationId": "OceanAWSK8sLaunchSpecLaunchNodes",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "launchRequest"
                ],
                "properties": {
                  "launchRequest": {
                    "type": "object",
                    "title": "Ocean AWS Virtual Node Group Launch Request",
                    "description": "Object specifying the details for the launch request.\n",
                    "required": [
                      "amount"
                    ],
                    "properties": {
                      "amount": {
                        "description": "The number of nodes to launch.\n",
                        "type": "integer",
                        "example": 5
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Virtual Node Group Launch Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/k8s/launchSpec/ols-12345abc/launchNodes"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "launchSpecId": {
                                    "type": "string",
                                    "example": "ols-f73821bc"
                                  },
                                  "newInstances": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "instanceId": {
                                          "type": "string",
                                          "example": "i-08d53d2a1dcede08f",
                                          "description": "Identifier of the launched instance\n"
                                        },
                                        "availabilityZone": {
                                          "type": "string",
                                          "example": "us-west-2b",
                                          "description": "The availability zone where the instance is launched\n"
                                        },
                                        "instanceType": {
                                          "type": "string",
                                          "example": "c3.xlarge",
                                          "description": "Type of the instance to be launched\n"
                                        },
                                        "lifeCycle": {
                                          "type": "string",
                                          "example": "spot"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:launchSpec:launchNodes"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/ecs/launchSpec/{launchSpecId}/launchContainerInstances": {
      "put": {
        "summary": "Launch Container Instances In VNG",
        "description": "Launch container instances in virtual node group.\n",
        "operationId": "OceanAWSEcsLaunchSpecLaunchNodes",
        "tags": [
          "Ocean ECS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1launchSpec~1%7BlaunchSpecId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "launchRequest"
                ],
                "properties": {
                  "launchRequest": {
                    "type": "object",
                    "title": "Ocean ECS VNG Launch Request",
                    "required": [
                      "amount"
                    ],
                    "properties": {
                      "amount": {
                        "description": "The number of container instances to launch.\n",
                        "type": "integer",
                        "example": 5
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean VNG Launch Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/aws/ecs/launchSpec/ols-12345abc/launchContainerInstances"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "launchSpecId": {
                              "type": "string",
                              "example": "ols-f73821bc"
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "newInstances": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "instanceId": {
                                          "type": "string",
                                          "example": "i-08d53d2a1dcede08f",
                                          "description": "identifier of the launched instance.\n"
                                        },
                                        "availabilityZone": {
                                          "type": "string",
                                          "example": "us-west-2b",
                                          "description": "The availability zone that the instance launched in.\n"
                                        },
                                        "instanceType": {
                                          "type": "string",
                                          "example": "c3.xlarge",
                                          "description": "Type of the launched instance.\n"
                                        },
                                        "lifeCycle": {
                                          "type": "string",
                                          "example": "spot",
                                          "description": "Spot or on-demand.\n"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:ecs:launchSpec:launchContainerInstances"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/k8s/extendedResourceDefinition": {
      "summary": "Ocean extended resource definition",
      "post": {
        "summary": "Create Extended Resource Definition",
        "description": "Creates an Ocean extended resource definition entity.\n",
        "operationId": "oceanK8sExtendedResourceDefinitionCreate",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "extendedResourceDefinition"
                    ],
                    "properties": {
                      "extendedResourceDefinition": {
                        "type": "object",
                        "description": "The Ocean extended resource definition.\n",
                        "title": "Ocean Extended Resource Definition",
                        "required": [
                          "name",
                          "mapping"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "readOnly": true,
                            "example": "erd-123abc",
                            "description": "Ocean extended resource definition identifier.\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "example.com/name",
                            "description": "The extended resource name as should be requested by your pods and registered to the nodes. Cannot be updated.</br>\nThe name should be a valid [Kubernetes extended resource name](https://kubernetes.io/docs/tasks/configure-pod-container/extended-resource/#assign-an-extended-resource-to-a-pod).\n"
                          },
                          "mapping": {
                            "type": "object",
                            "title": "AWS mapping",
                            "description": "A mapping between AWS instanceType or `*` as default and its value for the given extended resource.\n",
                            "example": {
                              "c3.large": "2Ki",
                              "c3.xlarge": "4Ki",
                              "c3.2xlarge": "8Mi"
                            }
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2021-03-17T08:13:08.000Z",
                            "description": "A timestamp of the extended resource definition creation.\n"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2021-03-17T15:06:13.000Z",
                            "description": "A timestamp of the latest extended resource definition update.\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Create Extended Resource Definition Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/k8s/extendedResourceDefinition"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1k8s~1extendedResourceDefinition/post/requestBody/content/application~1json/schema/allOf/0/properties/extendedResourceDefinition"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:k8s:extendedResourceDefinition"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Extended Resource Definitions",
        "description": "List the configurations for all Ocean extended resource definitions in the specified account.\n",
        "operationId": "oceanK8sExtendedResourceDefinitionList",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Extended Resource Definition Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/k8s/extendedResourceDefinition"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1k8s~1extendedResourceDefinition/post/requestBody/content/application~1json/schema/allOf/0/properties/extendedResourceDefinition"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:k8s:extendedResourceDefinition"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/k8s/extendedResourceDefinition/{oceanExtendedResourceDefinitionId}": {
      "get": {
        "summary": "Get Extended Resource Definition",
        "description": "Get the configurations for a specified Ocean extended resource definition.\n",
        "operationId": "oceanK8sExtendedResourceDefinitionGet",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "oceanExtendedResourceDefinitionId",
            "example": "erd-12345abc",
            "description": "Identifier of the Ocean extended resource definition.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Extended Resource Definition Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/k8s/extendedResourceDefinition/erd-12345abc"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1k8s~1extendedResourceDefinition/post/requestBody/content/application~1json/schema/allOf/0/properties/extendedResourceDefinition"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:k8s:extendedResourceDefinition"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Extended Resource Definition",
        "description": "Only the mapping parameter is updatable for extended resource definition.\n",
        "operationId": "oceanK8sExtendedResourceDefinitionUpdate",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1k8s~1extendedResourceDefinition~1%7BoceanExtendedResourceDefinitionId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/paths/~1ocean~1k8s~1extendedResourceDefinition/post/requestBody/content/application~1json/schema/allOf/0"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Update Extended Resource Definition Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/k8s/extendedResourceDefinition/erd-12345abc"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1k8s~1extendedResourceDefinition/post/requestBody/content/application~1json/schema/allOf/0/properties/extendedResourceDefinition"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:k8s:extendedResourceDefinition"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Extended Resource Definition",
        "description": "Delete a specified Ocean extended resource definition.\n",
        "operationId": "oceanK8sExtendedResourceDefinitionDelete",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1k8s~1extendedResourceDefinition~1%7BoceanExtendedResourceDefinitionId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Delete Extended Resource Definition Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/k8s/extendedResourceDefinition/erd-12345abc"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/migration/discovery": {
      "summary": "Ocean for AWS",
      "get": {
        "summary": "Get Migration Discovery",
        "description": "Get information about nodes which can be migrated into Ocean.\n",
        "operationId": "oceanAwsGetMigrationDiscovery",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "in": "query",
            "name": "shouldFetchPods",
            "example": "true",
            "description": "Should fetch data about running pods for each node.\n",
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Migration Discovery Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "ocean/aws/k8s/cluster/o-abcd1234/migration/discovery"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "title": "Workload migration discovery details",
                                "type": "object",
                                "properties": {
                                  "instances": {
                                    "type": "array",
                                    "description": "List of information about available nodes which can be migrated to the Ocean cluster.",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "k8sNodeName": {
                                          "type": "string",
                                          "description": "The kubernetes node name.",
                                          "example": "ip-111-11-11-111.us-west-1.compute.internal"
                                        },
                                        "asgName": {
                                          "type": "string",
                                          "description": "The ASG name the node belongs.",
                                          "example": "asg-name"
                                        },
                                        "instanceId": {
                                          "type": "string",
                                          "description": "The instance id.",
                                          "example": "i-asdfjk3989"
                                        },
                                        "launchSpecId": {
                                          "type": "string",
                                          "description": "The best match of Virtual Node Group to which the node could belong.",
                                          "example": "ols-1234ascv"
                                        },
                                        "runningPods": {
                                          "type": "integer",
                                          "description": "The number of running pods on the node (appears if shouldFetchPods was true).",
                                          "example": "6"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:cluster:migration:discovery"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/migration": {
      "summary": "Ocean for AWS",
      "post": {
        "summary": "Create Migration",
        "description": "Create a migration for a given existing instances.\n",
        "operationId": "oceanAwsPostMigration",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "migration"
                    ],
                    "properties": {
                      "migration": {
                        "type": "object",
                        "description": "Migration update configuration.\n",
                        "required": [
                          "instanceIds",
                          "shouldTerminateDrainedNodes",
                          "shouldEvictStandAlonePods",
                          "forcePodEvictionOnPdbFailure",
                          "batchSizePercentage"
                        ],
                        "properties": {
                          "instanceIds": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "A list of instance ids that should be migrated to the Ocean cluster.",
                            "example": [
                              "i-a12345",
                              "i-b12345"
                            ]
                          },
                          "shouldTerminateDrainedNodes": {
                            "type": "boolean",
                            "example": true,
                            "description": "Ocean will terminate the old instances once the pods that reside on them are migrated, and the old instances are fully drained.\n"
                          },
                          "shouldEvictStandAlonePods": {
                            "type": "boolean",
                            "example": true,
                            "description": "Ocean will terminate pods that do not belong to a Kubernetes deployment. This means that you would need to launch the pod manually (after the migration) due to the fact that there is no object that would do it automatically.\n"
                          },
                          "forcePodEvictionOnPdbFailure": {
                            "type": "boolean",
                            "example": true,
                            "description": "Ocean will force the Pod eviction from the instance, even if the distributed budget is not satisfied.\n"
                          },
                          "batchSizePercentage": {
                            "type": "integer",
                            "example": 50,
                            "description": "Indicates (in percentage) the batch size of the migration (meaning, how many nodes to migrate in each batch).\\\nCannot be null.\n",
                            "minimum": 1,
                            "maximum": 50
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Migration Create",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "ocean/aws/k8s/cluster/o-1234567/migration"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "properties": {
                                  "id": {
                                    "example": "owm-6e3819ae",
                                    "description": "The migration identifier of a specific migration.\n",
                                    "type": "string"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:cluster:migration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Migrations summary",
        "description": "Get summary of migrations history for an Ocean cluster.\n",
        "operationId": "oceanAwsGetMigrations",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Migrations Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "ocean/aws/k8s/cluster/o-1234567/migration"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Workload migration summary",
                                "description": "Workload migration summary of Ocean cluster.",
                                "properties": {
                                  "Id": {
                                    "type": "string",
                                    "example": "owm-1234567",
                                    "description": "The migration id.\n"
                                  },
                                  "state": {
                                    "type": "string",
                                    "description": "The latest state of this migration.\n",
                                    "enum": [
                                      "STARTING",
                                      "AWAIT_REPLACEMENTS",
                                      "HANDLE_UNSCHEDULE",
                                      "DRAIN_NODES",
                                      "VALIDATE_DRAIN",
                                      "STOPPING",
                                      "ERROR",
                                      "RESCHEDULE_NODES",
                                      "TERMINATE_NODES",
                                      "AWAIT_TERMINATION",
                                      "FINISHED_ERROR",
                                      "STOPPED",
                                      "FINISHED"
                                    ],
                                    "example": "FINISHED"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2021-10-1T05:51:06.000Z",
                                    "description": "When this migration was created.\n"
                                  },
                                  "completedAt": {
                                    "type": "string",
                                    "example": "2021-10-1T05:51:06.000Z",
                                    "description": "When this migration was completed.\n"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:cluster:migration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/aws/k8s/cluster/{oceanClusterId}/migration/{migrationId}": {
      "summary": "Ocean for AWS",
      "get": {
        "summary": "Get Migration Status",
        "description": "Get Migration full info and status for an Ocean cluster.\n",
        "operationId": "oceanAwsGetMigrationStatus",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "in": "path",
            "name": "migrationId",
            "example": "owm-6e3819ae",
            "description": "The migration identifier of a specific migration.\n",
            "schema": {
              "type": "string"
            },
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Migration Status Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "ocean/aws/k8s/cluster/o-abcd1234/migration/owm-abcd1234"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Workload migration",
                                "description": "Workload migration status of Ocean cluster.",
                                "properties": {
                                  "Id": {
                                    "type": "string",
                                    "example": "owm-1234567",
                                    "description": "The migration id.\n"
                                  },
                                  "oceanId": {
                                    "type": "string",
                                    "example": "o-abcd1234",
                                    "description": "The Ocean cluster identifier. Required for Virtual Node Group creation.\n"
                                  },
                                  "status": {
                                    "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1migration/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/properties/state"
                                  },
                                  "newInstances": {
                                    "type": "array",
                                    "title": "Workload migration details",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "instanceId": {
                                          "type": "string",
                                          "description": "The instance ID.",
                                          "example": "i-asdfjk3989"
                                        },
                                        "k8sNodeName": {
                                          "type": "string",
                                          "description": "The kubernetes node name.",
                                          "example": "ip-111-11-11-111.us-west-1.compute.internal"
                                        },
                                        "asgName": {
                                          "type": "string",
                                          "description": "The ASG name the node belongs.",
                                          "example": "asg-name"
                                        },
                                        "state": {
                                          "type": "string",
                                          "description": "The instance state.",
                                          "example": "RUNNING"
                                        },
                                        "podDetails": {
                                          "type": "array",
                                          "description": "in case migration instance status is \"REQUIRES_MANUAL_MIGRATION\" then the following pod data will appear.",
                                          "items": {
                                            "properties": {
                                              "id": {
                                                "type": "string",
                                                "description": "The pod ID.",
                                                "example": "abc123-abc123-abc123-abc123"
                                              },
                                              "name": {
                                                "type": "string",
                                                "description": "The pod name.",
                                                "example": "podName"
                                              },
                                              "kind": {
                                                "type": "string",
                                                "description": "The pod kind, currently divided into STAND_ALONE_POD & UNKNOWN",
                                                "example": "STAND_ALONE_POD"
                                              }
                                            }
                                          }
                                        },
                                        "runningPods": {
                                          "type": "integer",
                                          "description": "The number of running pods.",
                                          "example": "6"
                                        }
                                      }
                                    }
                                  },
                                  "oldInstances": {
                                    "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1migration~1%7BmigrationId%7D/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/properties/newInstances"
                                  },
                                  "unscheduledPodIds": {
                                    "type": "string",
                                    "example": "o-abcd1234",
                                    "description": "List of the unscedueled pod ids.\n"
                                  },
                                  "newUnscheduledPodIds": {
                                    "type": "string",
                                    "example": "o-abcd1234",
                                    "description": "List of the new unscedueled pod ids.\n"
                                  },
                                  "migrationConfig": {
                                    "type": "object",
                                    "description": "The object specifying the configuration flags when migration created.\n",
                                    "properties": {
                                      "shouldTerminateDrainedNodes": {
                                        "type": "boolean",
                                        "example": true,
                                        "description": "Ocean will terminate the old instances once the pods that reside on them are migrated, and the old instances are fully drained.\n"
                                      },
                                      "shouldEvictStandAlonePods": {
                                        "type": "boolean",
                                        "example": true,
                                        "description": "Ocean will terminate pods that do not belong to a Kubernetes deployment. This means that you would need to launch the pod manually (after the migration) due to the fact that there is no object that would do it automatically.\n"
                                      }
                                    }
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "example": "2021-10-1T05:51:06.000Z",
                                    "description": "When this migration was created.\n"
                                  },
                                  "erroredAt": {
                                    "type": "string",
                                    "example": "2021-10-1T05:51:06.000Z",
                                    "description": "When this migration received an error.\n"
                                  },
                                  "stoppedAt": {
                                    "type": "string",
                                    "example": "2021-10-1T05:51:06.000Z",
                                    "description": "When this migration was stopped.\n"
                                  },
                                  "completedAt": {
                                    "type": "string",
                                    "example": "2021-10-1T05:51:06.000Z",
                                    "description": "When this migration was completed.\n"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:cluster:migration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Stop Migration",
        "description": "Stop an ongoing Workload Migration.\n",
        "operationId": "oceanAwsPutMigration",
        "tags": [
          "Ocean AWS"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1ecs~1cluster~1%7BoceanClusterId%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1aws~1k8s~1cluster~1%7BoceanClusterId%7D~1migration~1%7BmigrationId%7D/get/parameters/2"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "migration"
                    ],
                    "properties": {
                      "migration": {
                        "required": [
                          "state"
                        ],
                        "type": "object",
                        "description": "Migration update configuration.\n",
                        "properties": {
                          "shouldTerminateDrainedNodes": {
                            "type": "boolean",
                            "example": true,
                            "default": false,
                            "description": "Ocean will terminate the old instances once the pods that reside on them are migrated, and the old instances are fully drained.\n"
                          },
                          "state": {
                            "type": "string",
                            "description": "The only allowed state to update is to \"STOPPED\". This state will stop a running migration.\n",
                            "example": "STOPPED"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Migrations Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "ocean/aws/k8s/cluster/o-1234567/migration/owm-abc1234"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "properties": {
                                  "id": {
                                    "example": "owm-6e3819ae",
                                    "description": "The migration identifier of a specific migration.\n",
                                    "type": "string"
                                  },
                                  "oceanId": {
                                    "type": "string",
                                    "description": "The identifier of the ocean cluster belong the migration.\n",
                                    "example": "o-12e31234"
                                  },
                                  "state": {
                                    "type": "string",
                                    "description": "if update succeeded, the return value should be \"STOPPED\".\n",
                                    "example": "STOPPED"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:aws:k8s:cluster:migration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/insights/k8s/cluster": {
      "summary": "Ocean Insights",
      "post": {
        "summary": "Create Cluster",
        "description": "Creates an Ocean Insight entity according to a given specification.\n\nPrerequisite:\n\nThe Ocean Controller is used to monitor the cluster resources and report back to Ocean. The Ocean Controller is required for Ocean Insights.<br />\n\nTo install the Ocean Controller, complete and run the following script on a machine with the kubectl command line tool installed and configured:\n\n```\n#!/usr/bin/env bash\ncurl -fsSL http://spotinst-public.s3.amazonaws.com/integrations/kubernetes/cluster-controller/scripts/init.sh | \\\nSPOTINST_TOKEN=<ENTER YOUR TOKEN HERE> \\\nSPOTINST_ACCOUNT=<ENTER YOUR SPOTINST ACCOUNT ID HERE> \\\nSPOTINST_CLUSTER_IDENTIFIER=<ENTER YOUR CLUSTER IDENTIFIER HERE> \\\nbash\n```\n",
        "operationId": "OceanInsightsClusterCreate",
        "tags": [
          "Ocean Insights"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "cluster"
                    ],
                    "properties": {
                      "cluster": {
                        "type": "object",
                        "title": "Ocean Insight",
                        "required": [
                          "name",
                          "controllerClusterId"
                        ],
                        "properties": {
                          "id": {
                            "type": "string",
                            "example": "oic-12345abc",
                            "readOnly": true,
                            "description": "Ocean Insight Cluster ID.\n"
                          },
                          "name": {
                            "type": "string",
                            "example": "Ocean::my-ocean-insight-name",
                            "description": "Add a name for the Ocean Insight cluster.\n"
                          },
                          "controllerClusterId": {
                            "type": "string",
                            "example": "oceanInsight.k8s",
                            "description": "The reporting identifier for the Ocean Controller.\n"
                          },
                          "createdAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2019-06-03T08:13:08.000Z",
                            "description": "A timestamp of the Ocean insight creation.\n"
                          },
                          "updatedAt": {
                            "type": "string",
                            "readOnly": true,
                            "format": "date-time",
                            "example": "2019-06-10T15:06:13.000Z",
                            "description": "A timestamp of the latest Ocean insight update.\n"
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Insight Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/insight/k8s/cluster"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1insights~1k8s~1cluster/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:insight:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Clusters",
        "description": "Get the configurations for all Ocean Insights clusters in the specified account.\n",
        "operationId": "OceanInsightsClusterList",
        "tags": [
          "Ocean Insights"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Insight Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/insight/k8s/cluster"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "description": "The Ocean Insight cluster.\n",
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "readOnly": true,
                                    "example": "o-134abcd",
                                    "description": "Ocean Insight cluster ID.\n"
                                  },
                                  "name": {
                                    "type": "string",
                                    "example": "test",
                                    "description": "Ocean Insight cluster name.\n"
                                  },
                                  "controllerClusterId": {
                                    "type": "string",
                                    "example": "test-123124",
                                    "description": "The reporting identifier for the Ocean Controller.\n"
                                  },
                                  "createdAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2021-03-17T08:13:08.000Z",
                                    "description": "A timestamp of the Ocean creation.\n"
                                  },
                                  "updatedAt": {
                                    "type": "string",
                                    "readOnly": true,
                                    "format": "date-time",
                                    "example": "2021-03-17T15:06:13.000Z",
                                    "description": "A timestamp of the latest Ocean update.\n"
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:insight:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/insights/k8s/cluster/{OCEAN_INSIGHT_ID}": {
      "get": {
        "summary": "Get Cluster",
        "description": "Get the configurations for a specified Ocean Insight cluster.\n",
        "operationId": "OceanInsightsClusterGet",
        "tags": [
          "Ocean Insights"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "path",
            "name": "OCEAN_INSIGHT_ID",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "oic-abcd1234",
            "description": "The ID of the Ocean Insight cluster.\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Insight Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/insight/k8s/cluster/oic-12345abc"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1insights~1k8s~1cluster/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:ocean:insight:k8s"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Cluster",
        "description": "Delete a specified Ocean Insight cluster.\n",
        "operationId": "OceanInsightClusterDelete",
        "tags": [
          "Ocean Insights"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1insights~1k8s~1cluster~1%7BOCEAN_INSIGHT_ID%7D/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Insight Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/insight/k8s/cluster/oic-12345abc"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/insights/savings": {
      "get": {
        "summary": "Get Organization Savings",
        "description": "Get the savings of the organization between the input time range.",
        "operationId": "organizationSavings",
        "tags": [
          "Insights Service"
        ],
        "parameters": [
          {
            "in": "query",
            "name": "fromDate",
            "example": "2022-06-20",
            "description": "Date can be either in ISO-8601 date format (yyyy-mm-dd) or in Unix Timestamp format (e.g. 1494751821472).\n*Minimum from date can be one year ago.\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "toDate",
            "example": "2022-11-20",
            "description": "Date can be either in ISO-8601 date format (yyyy-mm-dd) or in Unix Timestamp format (e.g. 1494751821472).\n*Data is shown until the past day (Does not include today's costs)\n",
            "schema": {
              "type": "string"
            },
            "required": false
          },
          {
            "in": "query",
            "name": "includeVmIds",
            "example": "true",
            "description": "If set to true, the response will include the VM IDs for each savings entry.\nDefault is false.\n",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "required": false
          }
        ],
        "responses": {
          "200": {
            "description": "organization savings Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "67582d0c-108b-4ef7-9fdc-d39678a30844",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/insights/savings",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "example": "GET",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2022-01-10T00:00:00.000Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes, status, type and any relevant data.\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code assigned to this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message for the respective status code\n"
                                }
                              }
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "savings:extended:resource",
                              "description": "The data type of each item in the response\n"
                            },
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "title": "savings:extended:resource",
                                "properties": {
                                  "resources": {
                                    "type": "array",
                                    "items": {
                                      "anyOf": [
                                        {
                                          "type": "object",
                                          "properties": {
                                            "accountId": {
                                              "type": "string",
                                              "example": "act-12345678"
                                            },
                                            "accountName": {
                                              "type": "string",
                                              "example": "production account"
                                            },
                                            "resourceId": {
                                              "type": "string",
                                              "example": "o-7dd944535"
                                            },
                                            "resourceName": {
                                              "type": "string",
                                              "example": "Ocean Kubernetes cluster name"
                                            },
                                            "productType": {
                                              "type": "string",
                                              "example": "AWS_KUBERNETES_OCEAN"
                                            },
                                            "runningHours": {
                                              "type": "number",
                                              "format": "float",
                                              "example": 107.3
                                            },
                                            "actualCosts": {
                                              "type": "number",
                                              "format": "float",
                                              "example": 107.3
                                            },
                                            "potentialCosts": {
                                              "type": "number",
                                              "format": "float",
                                              "example": 378.41
                                            },
                                            "amountSaved": {
                                              "type": "number",
                                              "format": "float",
                                              "example": 306.77
                                            }
                                          }
                                        },
                                        {
                                          "type": "object",
                                          "properties": {
                                            "accountId": {
                                              "type": "string",
                                              "example": "act-87654321"
                                            },
                                            "accountName": {
                                              "type": "string",
                                              "example": "dev account"
                                            },
                                            "resourceId": {
                                              "type": "string",
                                              "example": "sig-7drr944535"
                                            },
                                            "resourceName": {
                                              "type": "string",
                                              "example": "Elastigroup name"
                                            },
                                            "productType": {
                                              "type": "string",
                                              "example": "AWS_ELASTIGROUP"
                                            },
                                            "runningHours": {
                                              "type": "number",
                                              "format": "float",
                                              "example": 10
                                            },
                                            "actualCosts": {
                                              "type": "number",
                                              "format": "float",
                                              "example": 100
                                            },
                                            "potentialCosts": {
                                              "type": "number",
                                              "format": "float",
                                              "example": 1100
                                            },
                                            "amountSaved": {
                                              "type": "number",
                                              "format": "float",
                                              "example": 1000
                                            }
                                          }
                                        }
                                      ]
                                    }
                                  },
                                  "summary": {
                                    "type": "object",
                                    "properties": {
                                      "runningHours": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 117.3
                                      },
                                      "actualCosts": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 207.3
                                      },
                                      "potentialCosts": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 11378.41
                                      },
                                      "amountSaved": {
                                        "type": "number",
                                        "format": "float",
                                        "example": 1306.77
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/connect/executions/formatted_execution/{exe_id}": {
      "get": {
        "description": "Get details for the selected workflow execution.",
        "operationId": "get_formatted_execution_instance",
        "parameters": [
          {
            "description": "unique execution id",
            "in": "path",
            "name": "exe_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "AutomationExecutionId": {
                      "description": "SSM doc automation execution id.",
                      "type": "string"
                    },
                    "AutomationExecutionStatus": {
                      "description": "Status of execution.",
                      "type": "string"
                    },
                    "DocumentName": {
                      "description": "Name of the workflow",
                      "type": "string"
                    },
                    "DocumentVersion": {
                      "description": "Executed version of the workflow.",
                      "type": "integer"
                    },
                    "ExecutedBy": {
                      "description": "AWS role that executed the workflow.",
                      "type": "string"
                    },
                    "ExecutionEndTime": {
                      "description": "Time at which execution ended.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "ExecutionStartTime": {
                      "description": "Start time of the execution.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "Mode": {
                      "type": "string"
                    },
                    "Outputs": {
                      "description": "Outputs of the execution.",
                      "properties": {},
                      "type": "object"
                    },
                    "Parameters": {
                      "description": "Runtime parameters for execution.",
                      "properties": {},
                      "type": "object"
                    },
                    "PostProcessingCompletedAt": {
                      "description": "Time at which post processing was completed.",
                      "format": "date-time",
                      "type": "string"
                    },
                    "ResolvedTargets": {
                      "properties": {},
                      "type": "object"
                    },
                    "StepExecutions": {
                      "description": "List of steps in workflow execution.",
                      "items": {
                        "properties": {
                          "Action": {
                            "description": "Action of the step in the workflow.",
                            "type": "string"
                          },
                          "ExecutionEndTime": {
                            "description": "Time when step execution ended.",
                            "format": "date-time",
                            "type": "string"
                          },
                          "ExecutionStartTime": {
                            "description": "Time when execution started.",
                            "format": "date-time",
                            "type": "string"
                          },
                          "Inputs": {
                            "description": "Inputs for the step.",
                            "properties": {},
                            "type": "object"
                          },
                          "IsEnd": {
                            "description": "Indicator for final step.",
                            "type": "boolean"
                          },
                          "NextStep": {
                            "description": "Name of the next step.",
                            "type": "string"
                          },
                          "Outputs": {
                            "description": "Outputs of the step.",
                            "properties": {},
                            "type": "object"
                          },
                          "OverriddenParameters": {
                            "description": "Overridden Parameters of the step.",
                            "properties": {},
                            "type": "object"
                          },
                          "StepExecutionId": {
                            "description": "Unique execution id of the step.",
                            "type": "string"
                          },
                          "StepName": {
                            "description": "Name of the step.",
                            "type": "string"
                          },
                          "StepStatus": {
                            "description": "Status of the step.",
                            "type": "string"
                          },
                          "ValidNextSteps": {
                            "description": "Valid next steps in the workflow.",
                            "items": {
                              "type": "string"
                            },
                            "type": "array"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "Targets": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "TaskId": {
                      "description": "Integer id for execution task.",
                      "type": "integer"
                    },
                    "TenantId": {
                      "description": "Tenant id of the owner of the workflow.",
                      "type": "string"
                    },
                    "Trigger": {
                      "description": "User who triggered the workflow.",
                      "type": "string"
                    },
                    "WorkflowDeleted": {
                      "description": "Indicator if workflow is deleted.",
                      "type": "boolean"
                    },
                    "WorkspaceId": {
                      "description": "ID of workspace this workflow belongs to.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad request"
          }
        },
        "summary": "Get Execution",
        "tags": [
          "Connect Executions"
        ]
      },
      "parameters": []
    },
    "/connect/executions/formatted_execution/{exe_id}/download": {
      "get": {
        "description": "Get link to download details for the selected workflow execution.",
        "operationId": "get_formatted_execution_instance_download",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1executions~1formatted_execution~1%7Bexe_id%7D/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "redirect_url": {
                      "description": "Redirect url.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad request"
          }
        },
        "summary": "Get Execution download url",
        "tags": [
          "Connect Executions"
        ]
      },
      "parameters": []
    },
    "/connect/executions/{name}": {
      "parameters": [],
      "post": {
        "description": "Start the execution of the selected workflow.",
        "operationId": "post_workflow_execution",
        "parameters": [
          {
            "description": "DisplayName of a workflow",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Selected workflow version",
            "in": "query",
            "name": "version",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Currently selected Workspace ID",
            "in": "query",
            "name": "workspace_id",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "exe_id": {
                      "description": "Execution ID",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Created"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Start Execution",
        "tags": [
          "Connect Executions"
        ]
      }
    },
    "/connect/schedules": {
      "get": {
        "description": "List all scheduled workflows of the selected workspace.",
        "operationId": "get_schedules_list",
        "parameters": [
          {
            "description": "(optional) filter related schedules to a task",
            "in": "query",
            "name": "task_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "currently selected Workspace ID",
            "in": "query",
            "name": "workspace_id",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "items": {
                      "description": "List of workflow schedules.",
                      "items": {
                        "properties": {
                          "created_at": {
                            "description": "Time when the schedule was created.",
                            "type": "string"
                          },
                          "created_by": {
                            "description": "Tenant ID for the user who created the schedule.",
                            "type": "integer"
                          },
                          "created_by_username": {
                            "description": "Name of the user who created the schedule.",
                            "type": "string"
                          },
                          "enabled": {
                            "description": "Status of the schedule (true for active and false for inactive).",
                            "type": "boolean"
                          },
                          "rule": {
                            "description": "Rule ID of the schedule",
                            "type": "string"
                          },
                          "schedule_expression": {
                            "description": "CRON expression for the schedule.",
                            "type": "string"
                          },
                          "task_id": {
                            "description": "Task ID for the schedule.",
                            "type": "integer"
                          },
                          "workflow": {
                            "description": "Name of the workflow.",
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "List Scheduled Workflows",
        "tags": [
          "Connect Schedules"
        ]
      },
      "parameters": []
    },
    "/connect/schedules/{workflow_name}": {
      "delete": {
        "description": "Delete a selected execution schedule of the selected workflow.",
        "operationId": "delete_workflow_schedules",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1schedules~1%7Bworkflow_name%7D/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1schedules/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1connect~1schedules~1%7Bworkflow_name%7D/put/parameters/2"
          }
        ],
        "responses": {
          "200": {
            "content": {},
            "description": "Deleted"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Delete Schedule",
        "tags": [
          "Connect Schedules"
        ]
      },
      "get": {
        "description": "List all execution schedules for the selected workflow.",
        "operationId": "get_workflow_schedules",
        "parameters": [
          {
            "description": "unique workflow name only",
            "in": "path",
            "name": "workflow_name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1connect~1schedules/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1schedules/get/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "List Schedules for Workflow",
        "tags": [
          "Connect Schedules"
        ]
      },
      "parameters": [],
      "post": {
        "description": "Create a new execution schedule for the selected workflow.",
        "operationId": "post_workflow_schedules",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1schedules~1%7Bworkflow_name%7D/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1schedules/get/parameters/1"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "expression": {
                    "description": "CRON expression of the schedule.",
                    "type": "string"
                  },
                  "params": {
                    "description": "Runtime parameters for the workflow.",
                    "properties": {},
                    "type": "object"
                  },
                  "version": {
                    "description": "Version of the workflow.",
                    "type": "integer"
                  }
                },
                "required": [
                  "expression",
                  "version"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "rule_name": {
                      "description": "Rule ID of the schedule.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Created"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Create Schedule",
        "tags": [
          "Connect Schedules"
        ],
        "x-codegen-request-body-name": "payload"
      },
      "put": {
        "description": "Enable/disable the status of the selected execution schedule.",
        "operationId": "put_workflow_schedules",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1schedules~1%7Bworkflow_name%7D/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1schedules/get/parameters/1"
          },
          {
            "description": "version of workflow in schedule",
            "in": "query",
            "name": "version",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {},
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Update Schedule Status",
        "tags": [
          "Connect Schedules"
        ]
      }
    },
    "/connect/settings/apikeys": {
      "get": {
        "description": "Endpoint to fetch list of API Keys and its values.",
        "operationId": "get_settings_api_keys",
        "parameters": [
          {
            "description": "Disable redacting API keys",
            "in": "query",
            "name": "disable_redact",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Currently selected Workspace ID",
            "in": "query",
            "name": "workspace_id",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "apikeys": {
                              "description": "List of API keys.",
                              "items": {
                                "$ref": "#/paths/~1connect~1settings~1apikeys~1%7Bapikey_name%7D/get/responses/200/content/application~1json/schema/properties/body/allOf/0"
                              },
                              "type": "array"
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "List API Keys",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": []
    },
    "/connect/settings/apikeys/{apikey_name}": {
      "delete": {
        "description": "Endpoint to delete an API Key.",
        "operationId": "delete_settings_api_key_item",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys~1%7Bapikey_name%7D/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1settings~1slack~1finish_oauth/post/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Delete API Key",
        "tags": [
          "Connect Settings"
        ]
      },
      "get": {
        "description": "Endpoint to fetch the selected API key's information from the selected workspace.",
        "operationId": "get_settings_api_key_item",
        "parameters": [
          {
            "description": "API key name",
            "in": "path",
            "name": "apikey_name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "ApikeyName": {
                              "description": "API key name.",
                              "type": "string"
                            },
                            "CreatedDate": {
                              "description": "API key creation date.",
                              "format": "date-time",
                              "type": "string"
                            },
                            "Value": {
                              "description": "API key value.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "500": {
            "content": {},
            "description": "Internal Server Error"
          }
        },
        "summary": "Get API Key",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": [],
      "post": {
        "description": "Endpoint to create a new API Key.",
        "operationId": "post_settings_api_key_item",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys~1%7Bapikey_name%7D/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/1"
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "allOf": [
                            {
                              "$ref": "#/paths/~1connect~1settings~1slack~1finish_oauth/post/responses/200/content/application~1json/schema/properties/body/allOf/0"
                            },
                            {
                              "properties": {
                                "value": {
                                  "description": "API key value.",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          ]
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Created"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Create API Key",
        "tags": [
          "Connect Settings"
        ]
      },
      "put": {
        "description": "Move the API key to the new workspace.",
        "operationId": "put_settings_api_key_item",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys~1%7Bapikey_name%7D/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1settings~1slack~1finish_oauth/post/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Update API Key",
        "tags": [
          "Connect Settings"
        ]
      }
    },
    "/connect/settings/available/{service}": {
      "parameters": [],
      "post": {
        "description": "Checks whether given Alias name is available for use\nfor the selected service in the current organization.",
        "operationId": "post_setting_check_alias",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/get/parameters/0"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "alias": {
                    "description": "The alias to check availability for.",
                    "type": "string"
                  }
                },
                "required": [
                  "alias"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "alias": {
                              "description": "The alias that was checked for availability.",
                              "type": "string"
                            },
                            "available": {
                              "description": "Whether the alias is available for use. True for available and false for not available.",
                              "type": "boolean"
                            },
                            "message": {
                              "description": "A message indicating the availability of the alias.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Get Alias Name Availability",
        "tags": [
          "Connect Settings"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/connect/settings/connectors": {
      "get": {
        "description": "Retrieve a list of all enabled connectors (integration or resource), excluding those that are\nexclusively trigger-based. For each connector, extract essential settings from its schema and\ndetermine a boolean status indicating whether it's configured or not.",
        "operationId": "get_settings_connector_discovery",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "ansible": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "ansible connector details.",
                              "type": "object"
                            },
                            "apikeys": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "apikeys connector details.",
                              "type": "object"
                            },
                            "aws": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "aws connector details.",
                              "type": "object"
                            },
                            "aws_health": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "aws_health connector details.",
                              "type": "object"
                            },
                            "azure": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "azure connector details.",
                              "type": "object"
                            },
                            "azure_openai": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "azure_openai connector details.",
                              "type": "object"
                            },
                            "bitbucket": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "bitbucket connector details.",
                              "type": "object"
                            },
                            "cloudformation": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "cloudformation connector details.",
                              "type": "object"
                            },
                            "datadog": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "datadog connector details.",
                              "type": "object"
                            },
                            "eks": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "eks connector details.",
                              "type": "object"
                            },
                            "elasticsearch": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "elasticsearch connector details.",
                              "type": "object"
                            },
                            "gcp": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "gcp connector details.",
                              "type": "object"
                            },
                            "git": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "git connector details.",
                              "type": "object"
                            },
                            "gke": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "gke connector details.",
                              "type": "object"
                            },
                            "http": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "http connector details.",
                              "type": "object"
                            },
                            "humio": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "humio connector details.",
                              "type": "object"
                            },
                            "instana": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "instana connector details.",
                              "type": "object"
                            },
                            "jenkins": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "jenkins connector details.",
                              "type": "object"
                            },
                            "jira": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "jira connector details.",
                              "type": "object"
                            },
                            "new_relic": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "new_relic connector details.",
                              "type": "object"
                            },
                            "opsgenie": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "opsgenie connector details.",
                              "type": "object"
                            },
                            "pagerduty": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "pagerduty connector details.",
                              "type": "object"
                            },
                            "prometheus": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "prometheus connector details.",
                              "type": "object"
                            },
                            "pulumi": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "pulumi connector details.",
                              "type": "object"
                            },
                            "s3": {
                              "allOf": [
                                {
                                  "properties": {
                                    "coming_soon": {
                                      "description": "Whether the connector is coming soon. True for coming soon and false if connector is active.",
                                      "type": "boolean"
                                    },
                                    "connector_type": {
                                      "description": "Type of connector (Integration, Resource, Cloud).",
                                      "type": "string"
                                    },
                                    "connectors": {
                                      "items": {
                                        "description": "List of integrations this connector depends on.",
                                        "type": "string"
                                      },
                                      "type": "array"
                                    },
                                    "display_name": {
                                      "description": "Display name of the connector.",
                                      "type": "string"
                                    },
                                    "is_configured": {
                                      "description": "Whether the connector is configured. True if configured and false for not configured.",
                                      "type": "boolean"
                                    },
                                    "is_trigger": {
                                      "description": "Whether the connector is trigger-based. True for trigger based and false for not trigger based.",
                                      "type": "boolean"
                                    }
                                  },
                                  "type": "object"
                                }
                              ],
                              "description": "s3 connector details.",
                              "type": "object"
                            },
                            "servicenow": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "servicenow connector details.",
                              "type": "object"
                            },
                            "slack": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "slack connector details.",
                              "type": "object"
                            },
                            "sns": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "sns connector details.",
                              "type": "object"
                            },
                            "splunk": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "splunk connector details.",
                              "type": "object"
                            },
                            "splunk_on_call": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "splunk_on_call connector details.",
                              "type": "object"
                            },
                            "spot": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "spot connector details.",
                              "type": "object"
                            },
                            "spot_security": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "spot_security connector details.",
                              "type": "object"
                            },
                            "ssh": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "ssh connector details.",
                              "type": "object"
                            },
                            "sumologic": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "sumologic connector details.",
                              "type": "object"
                            },
                            "terraform": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "terraform connector details.",
                              "type": "object"
                            },
                            "terraform_cli": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "terraform_cli connector details.",
                              "type": "object"
                            },
                            "twilio": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "twilio connector details.",
                              "type": "object"
                            },
                            "zendesk": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1connectors/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                }
                              ],
                              "description": "zendesk connector details.",
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "content": {},
            "description": "Not Found"
          }
        },
        "summary": "List Enabled Connectors",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": []
    },
    "/connect/settings/jira/finish_oauth": {
      "parameters": [],
      "post": {
        "description": "API for status of Jira OAuth approval by Customer (Jira administrator).",
        "operationId": "post_jira_auth_settings",
        "parameters": [
          {
            "description": "URL of the Jira instance.",
            "in": "query",
            "name": "jira_url",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The request token provided by Jira for the integration.",
            "in": "query",
            "name": "req_token",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "The request token secret provided by Jira for the integration.",
            "in": "query",
            "name": "req_token_secret",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Slack integration alias.",
            "in": "query",
            "name": "alias",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "allOf": [
                            {
                              "$ref": "#/paths/~1connect~1settings~1slack~1finish_oauth/post/responses/200/content/application~1json/schema/properties/body/allOf/0"
                            },
                            {
                              "properties": {
                                "status": {
                                  "description": "Integration status. 'Successful' if the integration was created successfully; otherwise, an error message indicating the failure reason.",
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            }
                          ]
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "403": {
            "content": {},
            "description": "Forbidden"
          }
        },
        "summary": "Authenticate Jira Integration",
        "tags": [
          "Connect Settings"
        ]
      }
    },
    "/connect/settings/jira/integration_url": {
      "get": {
        "description": "This API is used to fetch Jira authorization URL.",
        "operationId": "get_jira_settings",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1jira~1finish_oauth/post/parameters/3"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1jira~1finish_oauth/post/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "alias": {
                              "description": "Alias for the Jira integration.",
                              "type": "string"
                            },
                            "jira_url": {
                              "description": "The URL of your Jira instance.",
                              "type": "string"
                            },
                            "req_token": {
                              "description": "The request token provided by Jira for the integration.",
                              "type": "string"
                            },
                            "req_token_secret": {
                              "description": "The request token secret provided by Jira for the integration.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Get Jira Authorization URL",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": []
    },
    "/connect/settings/plans": {
      "get": {
        "description": "Fetch various Spot Connect plan details with quotas and pricing.",
        "operationId": "get_plan_details",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "commercial": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1plans/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/free/allOf/0"
                                }
                              ],
                              "description": "Commercial plan details.",
                              "type": "object"
                            },
                            "free": {
                              "allOf": [
                                {
                                  "properties": {
                                    "execution_limit": {
                                      "description": "Execution limit for the plan.",
                                      "type": "integer"
                                    },
                                    "pricing": {
                                      "description": "Pricing for the plan.",
                                      "type": "integer"
                                    },
                                    "workflow_limit": {
                                      "description": "Workflow limit for the plan.",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                }
                              ],
                              "description": "Free plan details.",
                              "type": "object"
                            },
                            "internal": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1plans/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/free/allOf/0"
                                }
                              ],
                              "description": "Internal plan details.",
                              "type": "object"
                            },
                            "team": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1plans/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/free/allOf/0"
                                }
                              ],
                              "description": "Team plan details.",
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Get Spot Connect Plans",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": []
    },
    "/connect/settings/public_ips": {
      "get": {
        "description": "Returns a list of public IPs for customers to whitelist.",
        "operationId": "get_settings_public_i_ps",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "ips": {
                              "items": {
                                "description": "List of IP addresses.",
                                "type": "string"
                              },
                              "type": "array"
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "List Public IPs",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": []
    },
    "/connect/settings/quotas": {
      "get": {
        "description": "Fetch quotas for organization and provide information on their limits and current status.",
        "operationId": "get_quota_list",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "current_tier": {
                              "description": "Current plan tier.",
                              "type": "string"
                            },
                            "executions": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1quotas/get/responses/200/content/application~1json/schema/properties/body/allOf/0/properties/workflows/allOf/0"
                                }
                              ],
                              "description": "Current plan's execution details.",
                              "type": "object"
                            },
                            "plan_renew": {
                              "description": "Plan renewal date.",
                              "format": "date-time",
                              "type": "string"
                            },
                            "workflows": {
                              "allOf": [
                                {
                                  "properties": {
                                    "available": {
                                      "description": "Available number of workflows/executions in current plan.",
                                      "type": "integer"
                                    },
                                    "current_usage": {
                                      "description": "Total number of workflows/executions in current plan.",
                                      "type": "integer"
                                    },
                                    "workflow_limit": {
                                      "description": "Total limit of workflows/executions in current plan.",
                                      "type": "integer"
                                    }
                                  },
                                  "type": "object"
                                }
                              ],
                              "description": "Current plan's workflow details.",
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Get Quotas",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": []
    },
    "/connect/settings/schema/{service}": {
      "get": {
        "description": "Get the JSON schema for the given integration or resource.",
        "operationId": "get_setting_schema",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "schema": {
                              "description": "The JSON schema for the value.",
                              "properties": {},
                              "type": "object"
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Get Schema",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": []
    },
    "/connect/settings/slack/finish_oauth": {
      "parameters": [],
      "post": {
        "description": "After the user installs/authorizes the Spot Connect Slack app in their workspace,\nthey will be redirected back to the Slack integration page in the Fylamynt web app\nwith an authorization code. The web app will then call this API endpoint with that\n'code' in the query parameter. Instead, if the user rejects to authorize the Fylamynt\nSlack app in their workspace, the API request from the web app will contain the\n'error' code (e.g., error=access_denied) returned from Slack. The following code\nprocesses the request and returns success or failure response to the web app.\nSlack instance alias is part of 'state' query parameter, previously 'state' query\nparameter contained subdomain.",
        "operationId": "post_slack_o_auth_post_install",
        "parameters": [
          {
            "description": "Error message.  Provide either code or an error message, but not both.",
            "in": "query",
            "name": "error",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Slack authorization code. Provide either code or an error message, but not both.",
            "in": "query",
            "name": "code",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Alias of the Slack integration",
            "in": "query",
            "name": "state",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "message": {
                              "description": "Success message.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "content": {},
            "description": "Not Found"
          },
          "500": {
            "content": {},
            "description": "Internal Server Error"
          }
        },
        "summary": "Authenticate Slack Integration",
        "tags": [
          "Connect Settings"
        ]
      }
    },
    "/connect/settings/slack/integration_url": {
      "get": {
        "description": "This API is used to retrieve the Slack integration URL.\nThe integration_id URI parameter is optional for this API.",
        "operationId": "get_slack_integration_url",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1jira~1finish_oauth/post/parameters/3"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "integration_url": {
                              "description": "Integration URL of the selected integration.",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "500": {
            "content": {},
            "description": "Internal Server Error"
          }
        },
        "summary": "Get Slack Integration URL",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": []
    },
    "/connect/settings/triggers": {
      "get": {
        "description": "Endpoint to fetch the list of trigger connectors each containing the name, display name, snippet name, and\nconfiguration status of the respective connector.",
        "operationId": "get_trigger_connector_discovery",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "triggers": {
                              "items": {
                                "allOf": [
                                  {
                                    "properties": {
                                      "display_name": {
                                        "description": "Display name of the trigger.",
                                        "type": "string"
                                      },
                                      "is_configured": {
                                        "description": "Boolean for the integration status of the connector (This is deprecated and now the value is set to True always).",
                                        "type": "boolean"
                                      },
                                      "name": {
                                        "description": "System name of the trigger service (including the 'manual' option).",
                                        "type": "string"
                                      },
                                      "snippet_name": {
                                        "description": "Name of the associated snippet to load as the first anchor node in the Editor.",
                                        "type": "string"
                                      }
                                    },
                                    "type": "object"
                                  }
                                ],
                                "description": "List of triggers.",
                                "type": "object"
                              },
                              "type": "array"
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "List Trigger Connectors",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": []
    },
    "/connect/settings/zoom/finish_oauth": {
      "parameters": [],
      "post": {
        "description": "authorization code in the query parameter. Once we receive this request,\nwe will use the auth code and exchange it for an OAuth token with a\nrequest type 'authorization_code' by calling back to Zoom.\nIf we successfully exchange the auth code for a token, we will then save\nthe returned 'refresh_token' to secrets manager.",
        "operationId": "post_zoom_o_auth_post_install",
        "responses": {
          "200": {
            "content": {},
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "The Fylamynt web app will make a POST request to this endpoint that contains an",
        "tags": [
          "Connect Settings"
        ]
      }
    },
    "/connect/settings/zoom/integration_url": {
      "get": {
        "operationId": "get_zoom_integration_url",
        "responses": {
          "200": {
            "content": {},
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "This API is used for fetching the Zoom app integration URL",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": []
    },
    "/connect/settings/{service}": {
      "get": {
        "description": "Get the list of instances for a given service.",
        "operationId": "get_setting_items",
        "parameters": [
          {
            "description": "Name of connector service (value=ansible|apikeys|bitbucket|datadog|git|humio|instana|jira|opsgenie|aws_health|pagerduty|prometheus|pulumi|slack|splunk|splunk_on_call|spot|squadcast|terraform|terraform_cli|twilio|zoom)",
            "in": "path",
            "name": "service",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "description": "List of integrations. The body contains a list of integration credentials.",
                      "items": {
                        "properties": {},
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "List Integration Instances",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": [],
      "post": {
        "description": "Create a new secret for a given service.\n\nThe `Example model` contains models for all services that can be created.\nWhen calling this endpoint for a specific service, only the credentials\nfor that service should be provided in the payload.\n\nThe payload should be structured with the credentials inside a 'credentials' key.\nFor example, for an S3 integration:\n\n{\n    \"credentials\": {\n        \"alias\": \"my-s3-integration\",\n        \"target\": \"my-target\",\n        \"name\": \"my-bucket-name\"\n    }\n}\n\nNot all fields from all_input_models need to be sent in the payload,\nonly those relevant to the specific service being created.\n\nResponse will be the instance credentials that was created.",
        "operationId": "post_setting_items",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/1"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "ansible": {
                    "properties": {
                      "alias": {
                        "description": "Alias for Ansible integration instance.",
                        "type": "string"
                      },
                      "logs": {
                        "description": "Optional S3 bucket for execution logs. If not given, the logs will be uploaded to the same S3 bucket with the playbooks.",
                        "type": "string"
                      },
                      "playbooks": {
                        "description": "S3 bucket with playbooks directory.",
                        "type": "string"
                      },
                      "s3_access_role": {
                        "description": "Fylamynt IAM role for bucket policy in target account.",
                        "type": "string"
                      },
                      "ssh_private_key": {
                        "description": "Ansible Controller Private ssh key.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "azure_openai": {
                    "properties": {
                      "alias": {
                        "description": "Alias for OpenAI integration instance.",
                        "type": "string"
                      },
                      "api_key": {
                        "description": "API Key for your API.",
                        "type": "string"
                      },
                      "azure_endpoint": {
                        "description": "Azure Endpoint for your OpenAI service API.",
                        "type": "string"
                      },
                      "model": {
                        "description": "The deployment Name of the model deployed in user's Azure OpenAI Service.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "bitbucket": {
                    "properties": {
                      "access_token": {
                        "description": "Bitbucket Cloud Access Token for authentication using Access Token.",
                        "type": "string"
                      },
                      "alias": {
                        "description": "Alias for Bitbucket repo instance.",
                        "type": "string"
                      },
                      "url": {
                        "description": "Bitbucket repository URL, ex: Bitbucket personal repo -> `https://bitbucket.org/<username>/<repo-name>` for Bitbucket workspace repo -> `https://bitbucket.org/<workspace-name>/<repo-name>`.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "cloudformation": {
                    "properties": {
                      "alias": {
                        "description": "Alias for Cloudformation template.",
                        "type": "string"
                      },
                      "filePath": {
                        "description": "Absolute filepath of template file.",
                        "type": "string"
                      },
                      "ref": {
                        "description": "Github commit ref, (ie: main/master).",
                        "type": "string"
                      },
                      "repoId": {
                        "description": "The GitHub repo as a source for the Cloudformation template.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "datadog": {
                    "properties": {
                      "alias": {
                        "description": "Alias for Datadog integration instance.",
                        "type": "string"
                      },
                      "api_key": {
                        "description": "Datadog API key for your org.",
                        "type": "string"
                      },
                      "app_key": {
                        "description": "Datadog application key for your org.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "eks": {
                    "properties": {
                      "alias": {
                        "description": "Alias for EKS Permissions resource instance.",
                        "type": "string"
                      },
                      "role_arn": {
                        "description": "IAM Role ARN to be used for the EKS cluster.",
                        "type": "string"
                      },
                      "target": {
                        "description": "AWS Target Account for the EKS Cluster Role.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "elasticsearch": {
                    "properties": {
                      "alias": {
                        "description": "Alias for Datadog integration instance.",
                        "type": "string"
                      },
                      "api_key_id": {
                        "description": "Elasticsearch API key id.",
                        "type": "string"
                      },
                      "api_key_value": {
                        "description": "Elasticsearch API key value.",
                        "type": "string"
                      },
                      "cloud_id": {
                        "description": "Unique Id to configure your client to work with your Elastic Cloud deployment.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "git": {
                    "properties": {
                      "access_token": {
                        "description": "Github Access Token for authentication using Access Token.",
                        "type": "string"
                      },
                      "alias": {
                        "description": "Alias for GitHub repo instance.",
                        "type": "string"
                      },
                      "url": {
                        "description": "Git repository URL, ex: GitHub personal repo -> `https://github.com/<username>/<repo-name>` for Organization repo -> `https://github.com/<org-name>/<repo-name>`.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "gke": {
                    "properties": {
                      "alias": {
                        "description": "Alias for GKE integration instance.",
                        "type": "string"
                      },
                      "service_account_key": {
                        "description": "Provide Service Account Key in JSON Format.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "http": {
                    "properties": {
                      "alias": {
                        "description": "Alias for Http Endpoint integration instance.",
                        "type": "string"
                      },
                      "api_key": {
                        "description": "API Key for authentication.",
                        "type": "string"
                      },
                      "authorization_type": {
                        "description": "Select a method for HTTP request authorization.",
                        "type": "string"
                      },
                      "password": {
                        "description": "Password for authentication.",
                        "type": "string"
                      },
                      "token": {
                        "description": "Bearer token for authentication.",
                        "type": "string"
                      },
                      "url": {
                        "description": "A valid URL string based on the secure HTTPS protocol is required.",
                        "type": "string"
                      },
                      "username": {
                        "description": "Username for authentication.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "humio": {
                    "properties": {
                      "alias": {
                        "description": "Alias for Humio integration instance.",
                        "type": "string"
                      },
                      "humio_api_token": {
                        "description": "API Token obtained from Humio.",
                        "type": "string"
                      },
                      "humio_url": {
                        "description": "Provide Humio Cloud URL, example: https://cloud.us.humio.com.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "jenkins": {
                    "properties": {
                      "alias": {
                        "description": "Alias for Jenkins integration instance.",
                        "type": "string"
                      },
                      "api_token": {
                        "description": "API Token from authorized user.",
                        "type": "string"
                      },
                      "server_url": {
                        "description": "Jenkins server url:port.",
                        "type": "string"
                      },
                      "username": {
                        "description": "Jenkins Username associated with the token.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "jira": {
                    "properties": {
                      "JIRA_ACCESS_TOKEN": {
                        "description": "Jira Access Token.",
                        "type": "string"
                      },
                      "JIRA_CONSUMER_KEY": {
                        "description": "Consumer Key for Fylamynt Application in Jira.",
                        "type": "string"
                      },
                      "JIRA_CONSUMER_NAME": {
                        "description": "Consumer Name for Fylamynt Application in Jira.",
                        "type": "string"
                      },
                      "JIRA_KEY_CERT": {
                        "description": "Jira Key Certificate.",
                        "type": "string"
                      },
                      "JIRA_PUBLIC_KEY": {
                        "description": "Public Key for Fylamynt Application in Jira.",
                        "type": "string"
                      },
                      "JIRA_TOKEN_SECRET": {
                        "description": "Jira Token Secret.",
                        "type": "string"
                      },
                      "JIRA_URL": {
                        "description": "URL of your Jira account.",
                        "type": "string"
                      },
                      "alias": {
                        "description": "Alias for Jira integration instance.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "new_relic": {
                    "properties": {
                      "account_id": {
                        "description": "Unique account id to recognize your new relic account.",
                        "type": "integer"
                      },
                      "alias": {
                        "description": "Alias for New Relic integration instance.",
                        "type": "string"
                      },
                      "api_key": {
                        "description": "New Relic API key.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "pagerduty": {
                    "properties": {
                      "alias": {
                        "description": "Alias for PagerDuty integration instance.",
                        "type": "string"
                      },
                      "pagerduty_api_token": {
                        "description": "API Token obtained from PagerDuty.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "pulumi": {
                    "properties": {
                      "access_token": {
                        "description": "Pulumi Access Token.",
                        "type": "string"
                      },
                      "alias": {
                        "description": "Alias for Pulumi integration instance.",
                        "type": "string"
                      },
                      "backend": {
                        "description": "S3 bucket with Pulumi Config.",
                        "type": "string"
                      },
                      "passphrase": {
                        "description": "Passphrase for accessing Pulumi Config.",
                        "type": "string"
                      },
                      "team": {
                        "description": "Pulumi Organization.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "s3": {
                    "properties": {
                      "alias": {
                        "description": "Alias for S3 integration instance.",
                        "type": "string"
                      },
                      "name": {
                        "description": "S3 bucket name.",
                        "type": "string"
                      },
                      "target": {
                        "description": "Select an AWS Target Account for the S3 bucket.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "servicenow": {
                    "properties": {
                      "alias": {
                        "description": "Alias for ServiceNow integration instance.",
                        "type": "string"
                      },
                      "instance_url": {
                        "description": "ServiceNow instance URL.",
                        "type": "string"
                      },
                      "password": {
                        "description": "Password for authorized user on ServiceNow instance.",
                        "type": "string"
                      },
                      "username": {
                        "description": "Username for authorized user on ServiceNow instance.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "slack": {
                    "properties": {
                      "access_token": {
                        "description": "Slack OAuth2 token.",
                        "type": "string"
                      },
                      "alias": {
                        "description": "Alias for Slack integration instance.",
                        "type": "string"
                      },
                      "expire_time": {
                        "description": "Slack OAuth2 token expire time.",
                        "type": "string"
                      },
                      "refresh_token": {
                        "description": "Slack OAuth2 refresh token.",
                        "type": "string"
                      },
                      "scope": {
                        "description": "Permission scope for the Fylamynt App.",
                        "type": "string"
                      },
                      "slack_client_id": {
                        "description": "The ID associated with the Slack App.",
                        "type": "string"
                      },
                      "slack_client_secret": {
                        "description": "Slack App Client Secret.",
                        "type": "string"
                      },
                      "slack_signing_secret": {
                        "description": "Secret that Slack is signing every request with.",
                        "type": "string"
                      },
                      "slack_team_id": {
                        "description": "Id of Slack team/workspace that the token belongs to.",
                        "type": "string"
                      },
                      "slack_team_name": {
                        "description": "Name of Slack team/workspace that the token belongs to.",
                        "type": "string"
                      },
                      "slack_user_id": {
                        "description": "ID of the Slack user authenticated with Fylamynt.",
                        "type": "string"
                      },
                      "slack_user_name": {
                        "description": "Real name or username of the Slack user authenticated with Fylamynt.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "splunk": {
                    "properties": {
                      "access_token": {
                        "description": "Token used to access the Splunk instance.",
                        "type": "string"
                      },
                      "alias": {
                        "description": "Alias for Splunk integration instance.",
                        "type": "string"
                      },
                      "splunk_url": {
                        "description": "URL of the Splunk instance (e.g. 65.132.55.921). Do not include the port number.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "splunk_on_call": {
                    "properties": {
                      "alias": {
                        "description": "Alias for Splunk On-Call integration instance.",
                        "type": "string"
                      },
                      "api_id": {
                        "description": "API ID obtained from Splunk On-Call (VictorOps).",
                        "type": "string"
                      },
                      "api_key": {
                        "description": "API Key obtained from Splunk On-Call (VictorOps).",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "spot": {
                    "properties": {
                      "alias": {
                        "description": "Alias for Spot integration instance.",
                        "type": "string"
                      },
                      "api_token": {
                        "description": "A Spot Programmatic API Token is recommended or you may use a Personal Access Token.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "ssh": {
                    "properties": {
                      "alias": {
                        "description": "Alias for SSH target instance.",
                        "type": "string"
                      },
                      "hostIdentifier": {
                        "description": "Identifier for SSH target host such as hostname or public IPv4.",
                        "type": "string"
                      },
                      "privateKey": {
                        "description": "Private RSA key to run command without username/password.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "sumologic": {
                    "properties": {
                      "access_id": {
                        "description": "Unique access_id to access your Sumo Logic account.",
                        "type": "string"
                      },
                      "access_key": {
                        "description": "API key for authorization.",
                        "type": "string"
                      },
                      "alias": {
                        "description": "Alias for Sumologic integration instance.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "terraform": {
                    "properties": {
                      "alias": {
                        "description": "Alias for Terraform Cloud integration instance.",
                        "type": "string"
                      },
                      "organization": {
                        "description": "Terraform Cloud organization.",
                        "type": "string"
                      },
                      "token": {
                        "description": "Terraform Cloud API token (User or team token only).",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "terraform_cli": {
                    "properties": {
                      "alias": {
                        "description": "Alias for Terraform CLI instance.",
                        "type": "string"
                      },
                      "git_repo": {
                        "description": "The GIT repo as a source for the Terraform module.",
                        "type": "string"
                      },
                      "root": {
                        "description": "Directory with root module (defaults to .).",
                        "type": "string"
                      },
                      "s3_bucket": {
                        "description": "An S3 bucket as a source for the Terraform module.",
                        "type": "string"
                      },
                      "source_type": {
                        "description": "Different terraform source options.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "twilio": {
                    "properties": {
                      "accountSid": {
                        "description": "Account SID from Twilio dashboard to identify user at twilio end.",
                        "type": "string"
                      },
                      "alias": {
                        "description": "Alias for Twilio integration instance.",
                        "type": "string"
                      },
                      "authToken": {
                        "description": "Authentication token for Twilio account.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "zendesk": {
                    "properties": {
                      "alias": {
                        "description": "Alias for Zendesk integration instance.",
                        "type": "string"
                      },
                      "api_token": {
                        "description": "API token for authorization.",
                        "type": "string"
                      },
                      "email": {
                        "description": "Email id associated with your Zendesk account.",
                        "type": "string"
                      },
                      "subdomain_name": {
                        "description": "Enter Zendesk Subdomain name - https://<subdomain_name>.zendesk.com.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "body": {
                      "allOf": [
                        {
                          "properties": {
                            "ansible": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "playbooks": {
                                      "description": "S3 bucket with playbooks directory.",
                                      "type": "string"
                                    },
                                    "s3_access_role": {
                                      "description": "Fylamynt IAM role for bucket policy in target account.",
                                      "type": "string"
                                    },
                                    "ssh_private_key": {
                                      "description": "Ansible Controller Private ssh key.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "azure_openai": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "api_key": {
                                      "description": "API Key for your API.",
                                      "type": "string"
                                    },
                                    "azure_endpoint": {
                                      "description": "Azure Endpoint for your OpenAI serivce API.",
                                      "type": "string"
                                    },
                                    "model": {
                                      "description": "The deployment Name of the model deployed in user's Azure OpenAI Service.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "bitbucket": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "access_token": {
                                      "description": "Bitbucket Cloud Access Token for authentication using Access Token.",
                                      "type": "string"
                                    },
                                    "url": {
                                      "description": "Bitbucket repository URL, ex: Bitbucket personal repo -> `https://bitbucket.org/<username>/<repo-name>` for Bitbucket workspace repo -> `https://bitbucket.org/<workspace-name>/<repo-name>`.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "cloudformation": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "filePath": {
                                      "description": "Absolute filepath of template file.",
                                      "type": "string"
                                    },
                                    "ref": {
                                      "description": "Github commit ref, (ie: main/master).",
                                      "type": "string"
                                    },
                                    "repoId": {
                                      "description": "The GitHub repo as a source for the Cloudformation template.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "datadog": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "api_key": {
                                      "description": "Datadog API key for your org.",
                                      "type": "string"
                                    },
                                    "app_key": {
                                      "description": "Datadog application key for your org.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "eks": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "role_arn": {
                                      "description": "IAM Role ARN to be used for the EKS cluster.",
                                      "type": "string"
                                    },
                                    "target": {
                                      "description": "AWS Target Account for the EKS Cluster Role.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "elasticsearch": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "api_key_id": {
                                      "description": "Elasticsearch API key id.",
                                      "type": "string"
                                    },
                                    "api_key_value": {
                                      "description": "Elasticsearch API key value.",
                                      "type": "string"
                                    },
                                    "cloud_id": {
                                      "description": "Unique Id to configure your client to work with your Elastic Cloud deployment.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "git": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "access_token": {
                                      "description": "Github Access Token for authentication using Access Token.",
                                      "type": "string"
                                    },
                                    "repo_name": {
                                      "description": "Repository name.",
                                      "type": "string"
                                    },
                                    "url": {
                                      "description": "Git repository URL, ex: GitHub personal repo -> `https://github.com/<username>/<repo-name>` for Organization repo -> `https://github.com/<org-name>/<repo-name>`.",
                                      "type": "string"
                                    },
                                    "user_name": {
                                      "description": "Git username.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "gke": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "service_account_key": {
                                      "description": "Provide Service Account Key in JSON Format.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "http": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "authorization_type": {
                                      "description": "Select a method for HTTP request authorization.",
                                      "type": "string"
                                    },
                                    "token": {
                                      "description": "Bearer token for authentication.",
                                      "type": "string"
                                    },
                                    "url": {
                                      "description": "A valid URL string based on the secure HTTPS protocol is required.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "humio": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "humio_api_token": {
                                      "description": "API Token obtained from Humio.",
                                      "type": "string"
                                    },
                                    "humio_url": {
                                      "description": "Provide Humio Cloud URL, example: https://cloud.us.humio.com.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "jenkins": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "api_token": {
                                      "description": "API Token from authorized user.",
                                      "type": "string"
                                    },
                                    "server_url": {
                                      "description": "Jenkins server url:port.",
                                      "type": "string"
                                    },
                                    "username": {
                                      "description": "Jenkins Username associated with the token.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "jira": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "JIRA_CONSUMER_KEY": {
                                      "description": "Consumer Key for Fylamynt Application in Jira.",
                                      "type": "string"
                                    },
                                    "JIRA_CONSUMER_NAME": {
                                      "description": "Consumer Name for Fylamynt Application in Jira.",
                                      "type": "string"
                                    },
                                    "JIRA_PUBLIC_KEY": {
                                      "description": "Public Key for Fylamynt Application in Jira.",
                                      "items": {
                                        "type": "string"
                                      },
                                      "type": "array"
                                    },
                                    "JIRA_URL": {
                                      "description": "URL of your Jira account.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "new_relic": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "account_id": {
                                      "description": "Unique account id to recognize your new relic account.",
                                      "type": "integer"
                                    },
                                    "api_key": {
                                      "description": "New Relic API key.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "pagerduty": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "pagerduty_api_token": {
                                      "description": "API Token obtained from PagerDuty.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "pulumi": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "access_token": {
                                      "description": "Pulumi Access Token.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "s3": {
                              "allOf": [
                                {
                                  "properties": {
                                    "alias": {
                                      "description": "Alias for the integration.",
                                      "type": "string"
                                    },
                                    "connection_status": {
                                      "description": "Connection status of the integration.",
                                      "type": "boolean"
                                    },
                                    "date_updated": {
                                      "description": "Timestamp of last update.",
                                      "type": "integer"
                                    },
                                    "date_verified": {
                                      "description": "Timestamp of last verification.",
                                      "type": "integer"
                                    },
                                    "integration_id": {
                                      "description": "Unique identifier for the integration.",
                                      "type": "string"
                                    },
                                    "is_default": {
                                      "description": "Default status of the integration.",
                                      "type": "string"
                                    },
                                    "workspace_id": {
                                      "description": "Workspace ID associated with the integration.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                },
                                {
                                  "properties": {
                                    "name": {
                                      "description": "S3 bucket name.",
                                      "type": "string"
                                    },
                                    "target": {
                                      "description": "Select an AWS Target Account for the S3 bucket.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "servicenow": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "instance_url": {
                                      "description": "ServiceNow instance URL.",
                                      "type": "string"
                                    },
                                    "password": {
                                      "description": "Password for authorized user on ServiceNow instance.",
                                      "type": "string"
                                    },
                                    "username": {
                                      "description": "Username for authorized user on ServiceNow instance.",
                                      "type": "string"
                                    },
                                    "webhook_url": {
                                      "description": "Webhook URL.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "slack": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "scope": {
                                      "description": "Permission scope for the Fylamynt App.",
                                      "type": "string"
                                    },
                                    "slack_team_id": {
                                      "description": "Id of Slack team/workspace that the token belongs to.",
                                      "type": "string"
                                    },
                                    "slack_team_name": {
                                      "description": "Name of Slack team/workspace that the token belongs to.",
                                      "type": "string"
                                    },
                                    "slack_user_id": {
                                      "description": "ID of the Slack user authenticated with Fylamynt.",
                                      "type": "string"
                                    },
                                    "slack_user_name": {
                                      "description": "Real name or username of the Slack user authenticated with Fylamynt.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "splunk": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "access_token": {
                                      "description": "Token used to access the Splunk instance.",
                                      "type": "string"
                                    },
                                    "splunk_url": {
                                      "description": "URL of the Splunk instance (e.g. 65.132.55.921). Do not include the port number.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "splunk_on_call": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "api_id": {
                                      "description": "API ID obtained from Splunk On-Call (VictorOps).",
                                      "type": "string"
                                    },
                                    "api_key": {
                                      "description": "API Key obtained from Splunk On-Call (VictorOps).",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "spot": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "api_token": {
                                      "description": "A Spot Programmatic API Token is recommended or you may use a Personal Access Token.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "ssh": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "hostIdentifier": {
                                      "description": "Identifier for SSH target host such as hostname or public IPv4.",
                                      "type": "string"
                                    },
                                    "privateKey": {
                                      "description": "Private RSA key to run command without username/password.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "sumologic": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "access_id": {
                                      "description": "Unique access_id to access your Sumo Logic account.",
                                      "type": "string"
                                    },
                                    "access_key": {
                                      "description": "API key for authorization.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "terraform": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "organization": {
                                      "description": "Terraform Cloud organization.",
                                      "type": "string"
                                    },
                                    "token": {
                                      "description": "Terraform Cloud API token (User or team token only).",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "terraform_cli": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "s3_bucket": {
                                      "description": "An S3 bucket as a source for the Terraform module.",
                                      "type": "string"
                                    },
                                    "source_type": {
                                      "description": "Different terraform source options.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "twilio": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "accountSid": {
                                      "description": "Account SID from Twilio dashboard to identify user at twilio end.",
                                      "type": "string"
                                    },
                                    "authToken": {
                                      "description": "Authentication token for Twilio account.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            },
                            "zendesk": {
                              "allOf": [
                                {
                                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema/properties/body/allOf/0/properties/s3/allOf/0"
                                },
                                {
                                  "properties": {
                                    "api_token": {
                                      "description": "API token for authorization.",
                                      "type": "string"
                                    },
                                    "email": {
                                      "description": "Email id associated with your Zendesk account.",
                                      "type": "string"
                                    },
                                    "subdomain_name": {
                                      "description": "Enter Zendesk Subdomain name - https://<subdomain_name>.zendesk.com.",
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                }
                              ]
                            }
                          },
                          "type": "object"
                        }
                      ],
                      "description": "Response body.",
                      "type": "object"
                    },
                    "statusCode": {
                      "description": "HTTP status code.",
                      "type": "integer"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Created"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "content": {},
            "description": "Not Found"
          },
          "409": {
            "content": {},
            "description": "Conflict"
          },
          "422": {
            "content": {},
            "description": "Unprocessable Entity"
          },
          "500": {
            "content": {},
            "description": "Internal Server Error"
          }
        },
        "summary": "Create Secret",
        "tags": [
          "Connect Settings"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/connect/settings/{service}/{integration_id}": {
      "delete": {
        "description": "Endpoint handling two use cases for removing connector integration or resource:\n1) For connectors storing secrets in the tenant secrets db, remove the dynamic\n   secret keys added during connector integration\n2) For target account oriented resources stored in the Target Settings DB,\n   remove the resource associated with one 'alias' account or all accounts",
        "operationId": "delete_setting_item",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D~1%7Bintegration_id%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1settings~1slack~1finish_oauth/post/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Delete Integration/Resource",
        "tags": [
          "Connect Settings"
        ]
      },
      "get": {
        "description": "Get the details of the selected integration/resource instance.\n\nNote: The JSON response will contain credentials specific to the selected service and integration,\nunlike the response model which shows all possible fields for all services. The model is provided\nto illustrate the complete set of fields that may be present in the response, depending on which\nservice and integration is selected.",
        "operationId": "get_setting_item",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/get/parameters/0"
          },
          {
            "in": "path",
            "name": "integration_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Get Integration/Resource",
        "tags": [
          "Connect Settings"
        ]
      },
      "parameters": [],
      "patch": {
        "description": "An empty PATCH body \"{}\" will set the instance to default.\n\nTo move an individual instance:\ncall this endpoint with the 'old' workspace_id as the query parameter\nand the 'new' workspace_id in the body.\n\nE.X.:\nPATCH\nhttps://<be url>/settings/<service>/<instance_id>?workspace_id=cws-movefrom\nbody: {\"workspace_id\": \"cws-moveto\"}",
        "operationId": "patch_setting_item",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D~1%7Bintegration_id%7D/get/parameters/1"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {}
          },
          "description": "Workspace ID of the workspace to move integration/resource to.",
          "required": false
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1settings~1slack~1finish_oauth/post/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "201": {
            "content": {},
            "description": "Created"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Set Default/Move Integration/Resource",
        "tags": [
          "Connect Settings"
        ],
        "x-codegen-request-body-name": "workspace_id"
      },
      "put": {
        "description": "Update the Integration/Resource secrets for a given service and given integration instance.\n\nNote: The displayed request and response models show the structure for each service. \nWhen calling this endpoint, only the credentials for the specific service being updated \nshould be provided in the payload under the 'credentials' key. The response will contain \nthe newly updated integration information for that service.\n\nFor example, to update a Slack integration:\n\nRequest:\n{\n    \"credentials\": {\n        \"alias\": \"updated-slack-integration\",\n        \"bot_token\": \"xoxb-updated-token\",\n        \"signing_secret\": \"updated-secret\"\n    }\n}\n\nResponse will contain the updated Slack integration details.",
        "operationId": "put_setting_item",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D~1%7Bintegration_id%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1settings~1apikeys/get/parameters/1"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/requestBody/content/application~1json/schema"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1settings~1%7Bservice%7D/post/responses/201/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "content": {},
            "description": "Not Found"
          },
          "422": {
            "content": {},
            "description": "Unprocessable Entity"
          },
          "500": {
            "content": {},
            "description": "Internal Server Error"
          }
        },
        "summary": "Update Integration/Resource",
        "tags": [
          "Connect Settings"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/connect/targets": {
      "get": {
        "operationId": "get_target_account_list",
        "parameters": [
          {
            "description": "Currently selected Workspace ID",
            "in": "query",
            "name": "workspace_id",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {},
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Gets a list of all accounts",
        "tags": [
          "Connect Targets"
        ]
      },
      "parameters": [],
      "post": {
        "operationId": "post_target_account_list",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1targets/get/parameters/0"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "alias": {
                    "type": "string"
                  },
                  "external_id": {
                    "type": "string"
                  },
                  "is_default": {
                    "type": "boolean"
                  },
                  "preferred_region": {
                    "type": "string"
                  },
                  "role_arn": {
                    "type": "string"
                  }
                },
                "required": [
                  "alias",
                  "external_id",
                  "is_default",
                  "preferred_region",
                  "role_arn"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1targets/post/requestBody/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Creates a new entry in the database",
        "tags": [
          "Connect Targets"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/connect/targets/default": {
      "get": {
        "description": "It's acceptable to have zero defaults, but more than one should\nbe cleaned up. This can be done by updating an existing entry to set is_default=True.",
        "operationId": "get_target_account_get_default",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1targets/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {},
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Only return the default entry",
        "tags": [
          "Connect Targets"
        ]
      },
      "parameters": []
    },
    "/connect/targets/{target_alias}": {
      "delete": {
        "operationId": "delete_target_account_item",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1targets~1%7Btarget_alias%7D/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {},
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "delete the entry",
        "tags": [
          "Connect Targets"
        ]
      },
      "get": {
        "operationId": "get_target_account_item",
        "parameters": [
          {
            "description": "Unique alias for the target account",
            "in": "path",
            "name": "target_alias",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1targets/post/requestBody/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "get all fields of a specific account",
        "tags": [
          "Connect Targets"
        ]
      },
      "parameters": [],
      "patch": {
        "description": "This will only change the updated fields and will\nleave all other fields in place.",
        "operationId": "patch_target_account_item",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1targets~1%7Btarget_alias%7D/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1targets/get/parameters/0"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/paths/~1connect~1targets/post/requestBody/content/application~1json/schema"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1targets/post/requestBody/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Update fields on an account",
        "tags": [
          "Connect Targets"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/connect/workflows": {
      "get": {
        "operationId": "get_workflow_list",
        "parameters": [
          {
            "description": "Currently selected Workspace ID",
            "in": "query",
            "name": "workspace_id",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "SSM document owner (value=Self|Amazon|All, default=All)",
            "in": "query",
            "name": "owner",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {},
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Return all user workflows for a given workspace",
        "tags": [
          "Connect Workflows"
        ]
      },
      "parameters": [],
      "post": {
        "operationId": "post_workflow_list",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1workflows/get/parameters/0"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "Content": {
                    "allOf": [
                      {
                        "properties": {
                          "assumeRole": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "mainSteps": {
                            "items": {
                              "properties": {
                                "action": {
                                  "type": "string"
                                },
                                "inputs": {
                                  "properties": {
                                    "Choices": {
                                      "items": {
                                        "properties": {
                                          "NextStep": {
                                            "type": "string"
                                          },
                                          "Variable": {
                                            "type": "string"
                                          }
                                        },
                                        "required": [
                                          "NextStep",
                                          "Variable"
                                        ],
                                        "type": "object"
                                      },
                                      "type": "array"
                                    },
                                    "Default": {
                                      "type": "string"
                                    },
                                    "Duration": {
                                      "type": "string"
                                    },
                                    "FunctionName": {
                                      "type": "string"
                                    },
                                    "Payload": {
                                      "type": "string"
                                    }
                                  },
                                  "type": "object"
                                },
                                "isEnd": {
                                  "type": "boolean"
                                },
                                "maxAttempts": {
                                  "type": "integer"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "nextStep": {
                                  "type": "string"
                                },
                                "onFailure": {
                                  "type": "string"
                                },
                                "outputs": {
                                  "items": {
                                    "properties": {
                                      "Name": {
                                        "type": "string"
                                      },
                                      "Selector": {
                                        "type": "string"
                                      },
                                      "Type": {
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "Name",
                                      "Selector",
                                      "Type"
                                    ],
                                    "type": "object"
                                  },
                                  "type": "array"
                                },
                                "timeoutSeconds": {
                                  "type": "integer"
                                }
                              },
                              "required": [
                                "action",
                                "inputs",
                                "name"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          },
                          "parameters": {
                            "properties": {
                              "AutomationAssumeRole": {
                                "properties": {
                                  "default": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "type": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "description",
                                  "type"
                                ],
                                "type": "object"
                              },
                              "WorkflowSession": {
                                "properties": {
                                  "default": {
                                    "type": "string"
                                  },
                                  "description": {
                                    "type": "string"
                                  },
                                  "type": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "description",
                                  "type"
                                ],
                                "type": "object"
                              }
                            },
                            "type": "object"
                          },
                          "schemaVersion": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "description",
                          "mainSteps",
                          "schemaVersion"
                        ],
                        "type": "object"
                      }
                    ],
                    "description": "SSM document for the workflow.",
                    "type": "object"
                  },
                  "Name": {
                    "description": "A unique name for the workflow.",
                    "type": "string"
                  },
                  "StepDocuments": {
                    "description": "List of step documents used in the SSM document.",
                    "items": {
                      "properties": {
                        "document_id": {
                          "description": "Document ID from step_store.",
                          "type": "string"
                        },
                        "version": {
                          "description": "Version of the document.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "Tags": {
                    "description": "List of tags for the workflow.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "Content",
                  "Name"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1connect~1workflows/post/requestBody/content/application~1json/schema"
                    },
                    {
                      "properties": {
                        "DocumentFormat": {
                          "description": "SSM document format",
                          "type": "string"
                        },
                        "DocumentType": {
                          "description": "SSM document type",
                          "type": "string"
                        },
                        "DocumentVersion": {
                          "description": "SSM document version",
                          "type": "string"
                        },
                        "Status": {
                          "description": "SSM document status",
                          "type": "string"
                        }
                      },
                      "required": [
                        "DocumentType",
                        "DocumentVersion",
                        "Status"
                      ],
                      "type": "object"
                    }
                  ]
                }
              }
            },
            "description": "Success"
          },
          "201": {
            "content": {},
            "description": "Workflow created successfully"
          },
          "400": {
            "content": {},
            "description": "Request validation error"
          },
          "409": {
            "content": {},
            "description": "Duplicate workflow"
          }
        },
        "summary": "Create a new workflow in the selected workspace.",
        "tags": [
          "Connect Workflows"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/connect/workflows/{workflow_name}": {
      "delete": {
        "description": "Delete a selected version of the selected workflow.\nIf no version is specified, delete all versions of the workflow.",
        "operationId": "delete_workflow_instance",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/put/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1workflows/get/parameters/0"
          },
          {
            "description": "Selected workflow version",
            "in": "query",
            "name": "version",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "status": {
                      "description": "Status of the task. OK if workflow deleted successfully.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Delete Workflow",
        "tags": [
          "Connect Workflows"
        ]
      },
      "parameters": [],
      "put": {
        "description": "Update a selected workflow by creating a new version.\nNew workflow is created off of the latest version in SSM.",
        "operationId": "put_workflow_instance",
        "parameters": [
          {
            "description": "Unique workflow name",
            "in": "path",
            "name": "workflow_name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1connect~1workflows/get/parameters/0"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "Content": {
                    "allOf": [
                      {
                        "$ref": "#/paths/~1connect~1workflows/post/requestBody/content/application~1json/schema/properties/Content/allOf/0"
                      }
                    ],
                    "description": "SSM document for the workflow.",
                    "type": "object"
                  },
                  "Tags": {
                    "description": "List of workflow tags.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "Content"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "properties": {
                        "Description": {
                          "description": "Workflow description.",
                          "type": "string"
                        },
                        "DocumentVersion": {
                          "description": "Version of the SSM document.",
                          "type": "string"
                        },
                        "Editor": {
                          "description": "Editor of the workflow.",
                          "type": "string"
                        },
                        "EditorId": {
                          "description": "ID of the workflow editor.",
                          "type": "string"
                        },
                        "Name": {
                          "description": "Name to display to owner",
                          "type": "string"
                        },
                        "ReadOnly": {
                          "description": "True for read only workflows else false.",
                          "type": "boolean"
                        },
                        "Tags": {
                          "description": "List of workflow tags.",
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "UpdatedDate": {
                          "description": "Last updated date of the SSM document.",
                          "type": "string"
                        },
                        "WorkflowId": {
                          "description": "Unique ID for a workflow document version.",
                          "type": "string"
                        },
                        "WorkflowOwner": {
                          "description": "Owner of the workflow.",
                          "type": "string"
                        },
                        "WorkflowOwnerId": {
                          "description": "ID of the workflow owner.",
                          "type": "string"
                        },
                        "WorkspaceId": {
                          "description": "Workspace the workflow belongs to.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "Description",
                        "DocumentVersion",
                        "Name"
                      ],
                      "type": "object"
                    },
                    {
                      "properties": {
                        "CreatedDate": {
                          "description": "Date when workflow was created.",
                          "type": "string"
                        },
                        "DefaultVersion": {
                          "description": "Current default version in SSM.",
                          "type": "string"
                        },
                        "DisplayName": {
                          "description": "Display name of the workflow.",
                          "type": "string"
                        },
                        "DocumentFormat": {
                          "description": "SSM document format.",
                          "type": "string"
                        },
                        "DocumentType": {
                          "description": "SSM document type.",
                          "type": "string"
                        },
                        "Editor": {
                          "description": "Editor of the workflow.",
                          "type": "string"
                        },
                        "HashType": {
                          "description": "Hash type of the SSM.",
                          "type": "string"
                        },
                        "IsDefault": {
                          "description": "Tells the default version of the SSM.(true for default version and false for not default version.)",
                          "type": "boolean"
                        },
                        "LatestVersion": {
                          "description": "Newest version of the document.",
                          "type": "string"
                        },
                        "Parameters": {
                          "description": "Runtime parameters for the workflow.",
                          "items": {
                            "properties": {},
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "PlatformTypes": {
                          "description": "SSM document platforms.",
                          "type": "string"
                        },
                        "SSMDocument": {
                          "description": "Original SSM document.",
                          "type": "string"
                        },
                        "SchemaVersion": {
                          "description": "SSM schema.",
                          "type": "string"
                        },
                        "SsmHash": {
                          "description": "Hash value of the SSM.",
                          "type": "string"
                        },
                        "SsmName": {
                          "description": "Name of the workflow in ssm.",
                          "type": "string"
                        },
                        "Status": {
                          "description": "Ssm document status",
                          "type": "string"
                        },
                        "StepDocuments": {
                          "description": "List of step documents used in the SSM document.",
                          "items": {
                            "$ref": "#/paths/~1connect~1workflows/post/requestBody/content/application~1json/schema/properties/StepDocuments/items"
                          },
                          "type": "array"
                        },
                        "TenantId": {
                          "description": "Cognito ID of the owner.",
                          "type": "string"
                        },
                        "Versions": {
                          "description": "List of available versions.",
                          "items": {
                            "properties": {},
                            "type": "object"
                          },
                          "type": "array"
                        },
                        "WorkflowId": {
                          "type": "string"
                        },
                        "WorkflowOwner": {
                          "description": "Owner of the workflow.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "CreatedDate",
                        "DefaultVersion",
                        "DisplayName",
                        "DocumentFormat",
                        "DocumentType",
                        "HashType",
                        "IsDefault",
                        "LatestVersion",
                        "PlatformTypes",
                        "SSMDocument",
                        "SchemaVersion",
                        "SsmHash",
                        "SsmName",
                        "Status",
                        "TenantId"
                      ],
                      "type": "object"
                    }
                  ]
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Update Workflow",
        "tags": [
          "Connect Workflows"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/connect/workflows/{workflow_name}/availability": {
      "get": {
        "description": "Check if workflow name is available for use.",
        "operationId": "get_workflow_name_validation",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/put/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "available": {
                      "description": "Tells if workflow name is available for use.(true for available and false for unavailable.",
                      "type": "boolean"
                    },
                    "message": {
                      "description": "Helper message.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the workflow to check.",
                      "type": "string"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad request"
          }
        },
        "summary": "Get Workflow Name Availability",
        "tags": [
          "Connect Workflows"
        ]
      },
      "parameters": []
    },
    "/connect/workflows/{workflow_name}/content": {
      "get": {
        "description": "Return the content of the default/selected version of the selected workflow.",
        "operationId": "get_workflow_content",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/put/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/delete/parameters/2"
          },
          {
            "$ref": "#/paths/~1connect~1workflows/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "Content": {
                      "allOf": [
                        {
                          "$ref": "#/paths/~1connect~1workflows/post/requestBody/content/application~1json/schema/properties/Content/allOf/0"
                        }
                      ],
                      "description": "SSM document for the workflow.",
                      "type": "object"
                    },
                    "Description": {
                      "description": "Workflow description.",
                      "type": "string"
                    },
                    "Name": {
                      "description": "Name of the workflow.",
                      "type": "string"
                    },
                    "Parameters": {
                      "description": "Runtime parameters for the workflow.",
                      "items": {
                        "properties": {},
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "StepDocuments": {
                      "description": "List of step documents used in the SSM document.",
                      "items": {
                        "$ref": "#/paths/~1connect~1workflows/post/requestBody/content/application~1json/schema/properties/StepDocuments/items"
                      },
                      "type": "array"
                    },
                    "UpdatedDate": {
                      "description": "Date when the workflow was updated.",
                      "type": "string"
                    },
                    "WorkflowId": {
                      "description": "Unique ID for a workflow document version.",
                      "type": "string"
                    },
                    "showModal": {
                      "description": "Boolean value to show workflow modal.(true for showing and false for not showing.",
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "Content",
                    "Name"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Get Workflow Content",
        "tags": [
          "Connect Workflows"
        ]
      },
      "parameters": []
    },
    "/connect/workflows/{workflow_name}/duplicate": {
      "parameters": [],
      "post": {
        "description": "Duplicate a specific version of the selected workflow.",
        "operationId": "post_workflow_duplicate",
        "parameters": [
          {
            "description": "Name of workflow to be duplicated",
            "in": "query",
            "name": "name",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/put/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1workflows/get/parameters/0"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "NewName": {
                    "description": "Name of new workflow.",
                    "type": "string"
                  },
                  "Version": {
                    "description": "Version of the workflow to be duplicated.",
                    "type": "string"
                  }
                },
                "required": [
                  "NewName"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/put/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "201": {
            "content": {},
            "description": "Workflow duplicated successfully"
          },
          "400": {
            "content": {},
            "description": "Request validation error"
          }
        },
        "summary": "Create Duplicate Workflow",
        "tags": [
          "Connect Workflows"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/connect/workflows/{workflow_name}/info": {
      "get": {
        "description": "Return the information for the default/selected version of the selected workflow,\nincluding workflow description and tags.",
        "operationId": "get_workflow_info",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/put/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/delete/parameters/2"
          },
          {
            "$ref": "#/paths/~1connect~1workflows/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/put/responses/200/content/application~1json/schema"
                    },
                    {
                      "properties": {
                        "Schedules": {
                          "description": "Schedules of the workflow.",
                          "properties": {},
                          "type": "object"
                        }
                      },
                      "type": "object"
                    }
                  ]
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad request"
          }
        },
        "summary": "Get Workflow Information",
        "tags": [
          "Connect Workflows"
        ]
      },
      "parameters": [],
      "put": {
        "description": "Update the default version of the workflow to a specific version.",
        "operationId": "put_workflow_info",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/put/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/delete/parameters/2"
          },
          {
            "$ref": "#/paths/~1connect~1workflows/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D~1info/get/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad request"
          }
        },
        "summary": "Update Workflow Version",
        "tags": [
          "Connect Workflows"
        ]
      }
    },
    "/connect/workflows/{workflow_name}/integrations": {
      "get": {
        "description": "Return a list of integration instances for the default/selected version of a selected workflow.",
        "operationId": "get_workflow_integration_info",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/put/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1workflows~1%7Bworkflow_name%7D/delete/parameters/2"
          },
          {
            "description": "Only include integrations that can be moved to new workspace",
            "in": "query",
            "name": "movable_only",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1connect~1workflows/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "integration_type": {
                      "description": "Names of the integrations used in the workflow.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad request"
          }
        },
        "summary": "List Workflow Integrations",
        "tags": [
          "Connect Workflows"
        ]
      },
      "parameters": []
    },
    "/connect/workspaces": {
      "get": {
        "description": "List all workspaces the user is authorized to view.",
        "operationId": "get_workspace_list",
        "parameters": [
          {
            "description": "An optional fields mask",
            "in": "header",
            "name": "X-Fields",
            "schema": {
              "format": "mask",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "allOf": [
                        {
                          "$ref": "#/paths/~1connect~1workspaces/post/requestBody/content/application~1json/schema/allOf/0"
                        },
                        {
                          "properties": {
                            "workspace_id": {
                              "description": "Unique workspace ID",
                              "type": "string"
                            }
                          },
                          "type": "object"
                        }
                      ]
                    },
                    {
                      "properties": {
                        "permissions": {
                          "description": "List of permissions for that workspace",
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "workspace_id": {
                          "description": "Unique workspace ID",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  ]
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "List Workspaces",
        "tags": [
          "Connect Workspaces"
        ]
      },
      "parameters": [],
      "post": {
        "description": "Create a new workspace.",
        "operationId": "post_workspace_list",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1workspaces/get/parameters/0"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "properties": {
                      "description": {
                        "description": "Description of workspace",
                        "type": "string"
                      },
                      "name": {
                        "description": "Name of workspace",
                        "type": "string"
                      },
                      "owner": {
                        "description": "Owner of workspace",
                        "type": "string"
                      },
                      "type": {
                        "description": "Type of workspace",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  {
                    "properties": {
                      "entities": {
                        "description": "List of entities",
                        "items": {
                          "properties": {
                            "id": {
                              "description": "Spot ID of the user",
                              "type": "string"
                            },
                            "isGroup": {
                              "description": "If the user is present in any group",
                              "type": "boolean"
                            },
                            "isOwner": {
                              "description": "If the user is owner of that workspace",
                              "type": "boolean"
                            },
                            "name": {
                              "description": "Name of user",
                              "type": "string"
                            },
                            "permissions": {
                              "description": "List of permissions for that workspace",
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            }
                          },
                          "type": "object"
                        },
                        "type": "array"
                      }
                    },
                    "type": "object"
                  }
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1workspaces/get/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Workspace created successfully"
          },
          "400": {
            "content": {},
            "description": "Request validation error"
          },
          "409": {
            "content": {},
            "description": "Workspace name already exists"
          }
        },
        "summary": "Create Workspace",
        "tags": [
          "Connect Workspaces"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/connect/workspaces/name/available": {
      "parameters": [],
      "post": {
        "description": "Check if Workspace name is available for use.",
        "operationId": "post_workspace_name_availability_check",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1workspaces/get/parameters/0"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "name": {
                    "description": "Workspace name to check",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1connect~1workspaces~1name~1available/post/requestBody/content/application~1json/schema"
                    },
                    {
                      "properties": {
                        "available": {
                          "description": "Check if workspace name is available for use",
                          "type": "boolean"
                        },
                        "message": {
                          "description": "Response message on availability check",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  ]
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Request validation error"
          }
        },
        "summary": "Check Workspace Availability",
        "tags": [
          "Connect Workspaces"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/connect/workspaces/name/{workspace_name}": {
      "get": {
        "description": "Get details of a specific workspace using workspace name.",
        "operationId": "get_workspace_instance_by_name",
        "parameters": [
          {
            "description": "Workspace name",
            "in": "path",
            "name": "workspace_name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1connect~1workspaces/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1connect~1workspaces/post/requestBody/content/application~1json/schema/allOf/0"
                    },
                    {
                      "properties": {
                        "workspace_id": {
                          "description": "cws-XXXXXXX",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    }
                  ]
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Get Workspace by Name",
        "tags": [
          "Connect Workspaces"
        ]
      },
      "parameters": []
    },
    "/connect/workspaces/{workspace_id}": {
      "delete": {
        "description": "Delete a workspace specified by workspace_id",
        "operationId": "delete_workspace_instance",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1workspaces~1%7Bworkspace_id%7D/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {},
            "description": "Deleted"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Delete Workspace",
        "tags": [
          "Connect Workspaces"
        ]
      },
      "get": {
        "description": "Get details of a workspace specified by workspace_id.",
        "operationId": "get_workspace_instance",
        "parameters": [
          {
            "description": "Unique workspace ID",
            "in": "path",
            "name": "workspace_id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1connect~1workspaces/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1workspaces/get/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Get Workspace by ID",
        "tags": [
          "Connect Workspaces"
        ]
      },
      "parameters": [],
      "put": {
        "description": "Update a workspace specified by workspace_id.",
        "operationId": "put_workspace_instance",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1workspaces~1%7Bworkspace_id%7D/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1connect~1workspaces/get/parameters/0"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/paths/~1connect~1workspaces/post/requestBody/content/application~1json/schema"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1connect~1workspaces/get/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Update Workspace",
        "tags": [
          "Connect Workspaces"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/connect/workspaces/{workspace_id}/move-order": {
      "parameters": [],
      "post": {
        "description": "It moves a workflow and all integrations it uses\nin new workspace. Following things are needed -\nPermissions the user needs in both workspaces:\n    updateWorkflow\n    updateIntegration\n    updateSchedule\n    updateExecution",
        "operationId": "post_move_order_view",
        "parameters": [
          {
            "$ref": "#/paths/~1connect~1workspaces~1%7Bworkspace_id%7D/get/parameters/0"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "move_all_integrations": {
                    "description": "If we need to move all integrations used in that workflow",
                    "type": "boolean"
                  },
                  "workflow_name": {
                    "description": "Name of the workflow to move to the new workspace",
                    "type": "string"
                  },
                  "workspace_id": {
                    "description": "Workspace ID to move the workflow into",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {},
            "description": "Success"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          }
        },
        "summary": "Move Workflow and its Integrations to Another Workpace",
        "tags": [
          "Connect Workspaces"
        ],
        "x-codegen-request-body-name": "payload"
      }
    },
    "/ocean/{oceanId}/rightSizing/rule": {
      "post": {
        "summary": "Create Ocean Rightsizing Rule",
        "description": "",
        "operationId": "oceanRightsizingRuleCreate",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Ocean Rightsizing Rule",
                    "description": "Determines the Ocean Rightsizing rule\n",
                    "required": [
                      "recommendationApplicationIntervals"
                    ],
                    "properties": {
                      "ruleName": {
                        "type": "string",
                        "description": "The unique name of the rule",
                        "example": "dev-rule"
                      },
                      "restartReplicas": {
                        "type": "string",
                        "description": "Enable to sequentially restart pod batches according to recommendations, for all pods, only more than 1 replica, or not any pod.",
                        "enum": [
                          "MORE_THAN_ONE_REPLICA",
                          "ALL_MANIFEST",
                          "NO_RESTART"
                        ],
                        "example": "ALL_MANIFEST"
                      },
                      "excludePreliminaryRecommendations": {
                        "type": "boolean",
                        "description": "Exclude preliminary recommendations (recommendations based on less than 4 full days of data).",
                        "example": false
                      },
                      "recommendationApplicationIntervals": {
                        "description": "Determines the Ocean Rightsizing rule recommendation application intervals",
                        "type": "array",
                        "example": [
                          {
                            "repetitionBasis": "WEEKLY",
                            "weeklyRepetitionBasis": {
                              "intervalDays": [
                                "MONDAY",
                                "WEDNESDAY"
                              ],
                              "intervalHours": {
                                "startTime": "12:00",
                                "endTime": "14:00"
                              }
                            }
                          },
                          {
                            "repetitionBasis": "MONTHLY",
                            "monthlyRepetitionBasis": {
                              "intervalMonths": [
                                2,
                                4,
                                6
                              ],
                              "weekOfTheMonth": [
                                "FIRST",
                                "LAST"
                              ],
                              "weeklyRepetitionBasis": {
                                "intervalDays": [
                                  "MONDAY"
                                ],
                                "intervalHours": {
                                  "startTime": "03:00",
                                  "endTime": "04:00"
                                }
                              }
                            }
                          }
                        ],
                        "items": {
                          "type": "object",
                          "title": "Ocean Rightsizing Rule Recommendation Application Interval",
                          "description": "Determines the Ocean Rightsizing rule recommendation application interval\n",
                          "properties": {
                            "repetitionBasis": {
                              "type": "string",
                              "description": "The repetition basis",
                              "enum": [
                                "WEEKLY",
                                "MONTHLY"
                              ]
                            },
                            "monthlyRepetitionBasis": {
                              "type": "object",
                              "title": "Ocean Rightsizing Rule Monthly Repetition Basis",
                              "description": "Determines the Ocean Rightsizing rule monthly repetition basis\n",
                              "properties": {
                                "intervalMonths": {
                                  "type": "array",
                                  "description": "Array of the months (in number), when we want to trigger the apply recommendations.\n",
                                  "items": {
                                    "type": "integer",
                                    "example": 2
                                  }
                                },
                                "weekOfTheMonth": {
                                  "type": "string",
                                  "description": "Array of the weeks in the month, when we want to trigger the apply recommendations.\n",
                                  "enum": [
                                    "FIRST",
                                    "SECOND",
                                    "THIRD",
                                    "FOURTH",
                                    "LAST"
                                  ]
                                },
                                "weeklyRepetitionBasis": {
                                  "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/recommendationApplicationIntervals/items/properties/weeklyRepetitionBasis"
                                }
                              }
                            },
                            "weeklyRepetitionBasis": {
                              "type": "object",
                              "title": "Ocean Rightsizing Rule Weekly Repetition Basis",
                              "description": "Determines the Ocean Rightsizing rule weekly repetition basis\n",
                              "properties": {
                                "intervalDays": {
                                  "type": "array",
                                  "description": "Array of the days of the week, when we want to trigger the apply recommendations.\n",
                                  "items": {
                                    "type": "string",
                                    "enum": [
                                      "SUNDAY",
                                      "MONDAY",
                                      "TUESDAY",
                                      "WEDNESDAY",
                                      "THURSDAY",
                                      "FRIDAY",
                                      "SATURDAY"
                                    ],
                                    "example": "MONDAY"
                                  }
                                },
                                "intervalHours": {
                                  "type": "object",
                                  "properties": {
                                    "startTime": {
                                      "type": "string",
                                      "example": "12:00"
                                    },
                                    "endTime": {
                                      "type": "string",
                                      "example": "14:00"
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      },
                      "recommendationApplicationMinThreshold": {
                        "type": "object",
                        "title": "Ocean Rightsizing Rule Recommendation Application Min Threshold",
                        "description": "Determines the extent of difference between current request and recommendation to trigger a change in percentage\n",
                        "properties": {
                          "cpuPercentage": {
                            "type": "number",
                            "minimum": 0.05,
                            "maximum": 1,
                            "default": 0.05,
                            "example": 0.412
                          },
                          "memoryPercentage": {
                            "type": "number",
                            "minimum": 0.05,
                            "maximum": 1,
                            "default": 0.05,
                            "example": 0.36
                          }
                        }
                      },
                      "recommendationApplicationBoundaries": {
                        "type": "object",
                        "title": "Ocean Rightsizing Rule Recommendation Application Boundaries",
                        "description": "Determines the Ocean Rightsizing rule recommendation application boundaries.\n",
                        "properties": {
                          "cpu": {
                            "type": "object",
                            "properties": {
                              "min": {
                                "type": "integer",
                                "description": "the minimal value of cpu in vCpu",
                                "example": 0
                              },
                              "max": {
                                "type": "integer",
                                "description": "the maximal value of cpu in vCpu",
                                "example": 100
                              }
                            }
                          },
                          "memory": {
                            "type": "object",
                            "properties": {
                              "min": {
                                "type": "integer",
                                "description": "the minimal value of memory in Gib",
                                "minimum": 0,
                                "example": 1
                              },
                              "max": {
                                "type": "integer",
                                "description": "the maximal value of memory in Gib",
                                "minimum": 0,
                                "example": 80
                              }
                            }
                          }
                        }
                      },
                      "recommendationApplicationOverheadValues": {
                        "type": "object",
                        "title": "Ocean Rightsizing Rule Recommendation Application Overhead Values",
                        "description": "Determines the Ocean Rightsizing rule recommendation application overhead values\n",
                        "properties": {
                          "cpuPercentage": {
                            "type": "number",
                            "minimum": 0.1,
                            "maximum": 1,
                            "default": 0.1,
                            "example": 0.8
                          },
                          "memoryPercentage": {
                            "type": "number",
                            "minimum": 0.1,
                            "maximum": 1,
                            "default": 0.1,
                            "example": 0.5
                          }
                        }
                      },
                      "recommendationApplicationHPA": {
                        "type": "object",
                        "title": "Ocean Rightsizing Rule Recommendation Application For HPA",
                        "description": "HPA Rightsizing Rule Recommendation Configuration",
                        "properties": {
                          "allowHPARecommendations": {
                            "type": "boolean",
                            "description": "Determines by the rule if recommendation application is allowed for workloads with HPA definition.",
                            "example": true
                          }
                        }
                      },
                      "autoApplyDefinition": {
                        "type": "object",
                        "title": "Ocean Rightsizing Rule Auto Apply Definition",
                        "description": "Ocean Rightsizing Rule Auto Apply Configuration",
                        "properties": {
                          "enabled": {
                            "type": "boolean",
                            "description": "Determines if auto apply is enabled.",
                            "example": true
                          },
                          "namespaces": {
                            "type": "array",
                            "description": "A list of namespaces that match the auto-apply rule.",
                            "items": {
                              "type": "string"
                            },
                            "example": [
                              "namespace1",
                              "namespace2",
                              "namespace3"
                            ]
                          },
                          "labels": {
                            "type": "object",
                            "description": "A set of key-value label pairs used to automatically apply this rule to all workloads in the cluster that match these labels.\n",
                            "example": {
                              "app": "my-app",
                              "environment": "production"
                            }
                          }
                        }
                      },
                      "cpuPercentile": {
                        "type": "integer",
                        "description": "vCPU percentile for calculating recommendations.",
                        "example": 95
                      },
                      "memoryPercentile": {
                        "type": "integer",
                        "description": "Memory percentile for calculating recommendations.",
                        "example": 90
                      },
                      "downsideOnly": {
                        "type": "boolean",
                        "description": "When set to 'true', only downscale recommendations will be applied.",
                        "default": false
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Rightsizing Rule Create Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/{oceanId}/rightSizing/rule"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "mcs:ocean:rightsizing:rule"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "List Ocean Rightsizing Rules",
        "description": "",
        "operationId": "oceanRightsizingRulesList",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "in": "path",
            "name": "oceanId",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "o-abcd1234",
            "description": "Identifier of the Ocean cluster.\n"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Rightsizing Rules Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/{oceanId}/rightSizing/rule"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "description": "Rightsizing rule",
                                "type": "object",
                                "properties": {
                                  "oceanId": {
                                    "type": "string",
                                    "example": "o-482d9d26"
                                  },
                                  "clusterIdentifier": {
                                    "type": "string",
                                    "example": "dev-cluster"
                                  },
                                  "ruleName": {
                                    "type": "string",
                                    "example": "dev-rule"
                                  },
                                  "restartReplicas": {
                                    "type": "string",
                                    "description": "Enable to sequentially restart pod batches according to recommendations, for all pods, only more than 1 replica, or not any pod.",
                                    "enum": [
                                      "MORE_THAN_ONE_REPLICA",
                                      "ALL_MANIFEST",
                                      "NO_RESTART"
                                    ],
                                    "example": "ALL_MANIFEST"
                                  },
                                  "excludePreliminaryRecommendations": {
                                    "type": "boolean",
                                    "description": "Exclude preliminary recommendations (recommendations based on less than 4 full days of data).",
                                    "example": false
                                  },
                                  "recommendationApplicationIntervals": {
                                    "type": "array",
                                    "example": [
                                      {
                                        "repetitionBasis": "WEEKLY",
                                        "weeklyRepetitionBasis": {
                                          "intervalDays": [
                                            "MONDAY",
                                            "WEDNESDAY"
                                          ],
                                          "intervalHours": {
                                            "startTime": "12:00",
                                            "endTime": "14:00"
                                          }
                                        }
                                      },
                                      {
                                        "repetitionBasis": "MONTHLY",
                                        "monthlyRepetitionBasis": {
                                          "intervalMonths": [
                                            2,
                                            4,
                                            6
                                          ],
                                          "weekOfTheMonth": [
                                            "FIRST",
                                            "LAST"
                                          ],
                                          "weeklyRepetitionBasis": {
                                            "intervalDays": [
                                              "MONDAY"
                                            ],
                                            "intervalHours": {
                                              "startTime": "03:00",
                                              "endTime": "04:00"
                                            }
                                          }
                                        }
                                      }
                                    ],
                                    "items": {
                                      "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/recommendationApplicationIntervals/items"
                                    }
                                  },
                                  "recommendationApplicationMinThreshold": {
                                    "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/recommendationApplicationMinThreshold"
                                  },
                                  "recommendationApplicationBoundaries": {
                                    "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/recommendationApplicationBoundaries"
                                  },
                                  "recommendationApplicationOverheadValues": {
                                    "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/recommendationApplicationOverheadValues"
                                  },
                                  "recommendationApplicationHPA": {
                                    "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/recommendationApplicationHPA"
                                  },
                                  "autoApplyDefinition": {
                                    "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/autoApplyDefinition"
                                  },
                                  "cpuPercentile": {
                                    "type": "integer",
                                    "description": "vCPU percentile for calculating recommendations.",
                                    "example": 95
                                  },
                                  "memoryPercentile": {
                                    "type": "integer",
                                    "description": "Memory percentile for calculating recommendations.",
                                    "example": 90
                                  },
                                  "downsideOnly": {
                                    "type": "boolean",
                                    "description": "When set to 'true', only downscale recommendations will be applied.",
                                    "example": false
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "mcs:ocean:rightsizing:rule"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete Ocean Rightsizing Rules",
        "description": "",
        "operationId": "oceanRightsizingRuleDelete",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Ocean Rightsizing Rule Names",
                    "description": "Rightsizing Rule Names to delete.\n",
                    "properties": {
                      "ruleNames": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "example": [
                          "dev-rule",
                          "test-rule"
                        ]
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Rightsizing Deleted Rule Names Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/{oceanId}/rightSizing/rule"
                            },
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "ruleNames": {
                                    "type": "array",
                                    "example": [
                                      "dev-rule",
                                      "test-rule"
                                    ],
                                    "items": {
                                      "type": "string"
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "mcs:ocean:rightsizing:rule"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/{oceanId}/rightSizing/rule/{ruleName}": {
      "get": {
        "summary": "Get Ocean Rightsizing Rule",
        "description": "",
        "operationId": "oceanRightsizingRuleGet",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "in": "path",
            "name": "ruleName",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "dev-rule",
            "description": "Identifier of rightsizing rule.\n"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/responses/200"
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update Ocean Rightsizing Rule",
        "description": "",
        "operationId": "oceanRightsizingRuleUpdate",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule~1%7BruleName%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Ocean Rightsizing Rule",
                    "description": "Determines the Ocean Rightsizing rule\n",
                    "required": [
                      "recommendationApplicationIntervals"
                    ],
                    "properties": {
                      "restartReplicas": {
                        "type": "string",
                        "description": "Enable to sequentially restart pod batches according to recommendations, for all pods, only more than 1 replica, or not any pod.",
                        "enum": [
                          "MORE_THAN_ONE_REPLICA",
                          "ALL_MANIFEST",
                          "NO_RESTART"
                        ],
                        "example": "ALL_MANIFEST"
                      },
                      "excludePreliminaryRecommendations": {
                        "type": "boolean",
                        "description": "Exclude preliminary recommendations (recommendations based on less than 4 full days of data).",
                        "example": false
                      },
                      "recommendationApplicationIntervals": {
                        "description": "Determines the Ocean Rightsizing rule recommendation application intervals",
                        "type": "array",
                        "example": [
                          {
                            "repetitionBasis": "WEEKLY",
                            "weeklyRepetitionBasis": {
                              "intervalDays": [
                                "MONDAY",
                                "WEDNESDAY"
                              ],
                              "intervalHours": {
                                "startTime": "12:00",
                                "endTime": "14:00"
                              }
                            }
                          },
                          {
                            "repetitionBasis": "MONTHLY",
                            "monthlyRepetitionBasis": {
                              "intervalMonths": [
                                2,
                                4,
                                6
                              ],
                              "weekOfTheMonth": [
                                "FIRST",
                                "LAST"
                              ],
                              "weeklyRepetitionBasis": {
                                "intervalDays": [
                                  "MONDAY"
                                ],
                                "intervalHours": {
                                  "startTime": "03:00",
                                  "endTime": "04:00"
                                }
                              }
                            }
                          }
                        ],
                        "items": {
                          "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/recommendationApplicationIntervals/items"
                        }
                      },
                      "recommendationApplicationMinThreshold": {
                        "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/recommendationApplicationMinThreshold"
                      },
                      "recommendationApplicationBoundaries": {
                        "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/recommendationApplicationBoundaries"
                      },
                      "recommendationApplicationOverheadValues": {
                        "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/recommendationApplicationOverheadValues"
                      },
                      "recommendationApplicationHPA": {
                        "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/recommendationApplicationHPA"
                      },
                      "autoApplyDefinition": {
                        "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/post/requestBody/content/application~1json/schema/allOf/0/properties/autoApplyDefinition"
                      },
                      "cpuPercentile": {
                        "type": "integer",
                        "description": "vCPU percentile for calculating recommendations.",
                        "example": 95
                      },
                      "memoryPercentile": {
                        "type": "integer",
                        "description": "Memory percentile for calculating recommendations.",
                        "example": 90
                      },
                      "downsideOnly": {
                        "type": "boolean",
                        "description": "When set to 'true', only downscale recommendations will be applied.",
                        "default": false
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Rightsizing Rule Update Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/{oceanId}/rightSizing/rule/{ruleName]"
                            },
                            "method": {
                              "example": "PUT"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "mcs:ocean:rightsizing:rule"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/{oceanId}/rightSizing/rule/{ruleName}/attachment": {
      "post": {
        "summary": "Attach Ocean Rightsizing Rule",
        "description": "",
        "operationId": "oceanRightsizingRuleMatchingAttachment",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule~1%7BruleName%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "namespaces": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "namespaceName": {
                              "type": "string",
                              "description": "List of namespaces",
                              "example": "kube-system"
                            },
                            "workloads": {
                              "type": "array",
                              "description": "List of workloads",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the workload",
                                    "example": "kube-proxy"
                                  },
                                  "workloadType": {
                                    "type": "string",
                                    "description": "The type of the workload",
                                    "example": "Deployment"
                                  },
                                  "regexName": {
                                    "type": "string",
                                    "description": "The regex for the workload name",
                                    "example": "spotinst*"
                                  }
                                }
                              },
                              "example": [
                                {
                                  "name": "kube-proxy",
                                  "workloadType": "DaemonSet"
                                },
                                {
                                  "regexName": "spotinst*",
                                  "workloadType": "Deployment"
                                }
                              ]
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Rightsizing Rule Attachment Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/{oceanId}/rightSizing/rule/{ruleName}/attachment"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "type": "string",
                              "example": "mcs:ocean:rightsizing:ruleMatching"
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "rulesMatchings": {
                                    "type": "array",
                                    "example": [
                                      {
                                        "oceanId": "o-6ea3032a",
                                        "clusterIdentifier": "dev-cluster",
                                        "namespace": "kube-system",
                                        "resourceType": "Deployment",
                                        "name": "kube-proxy",
                                        "ruleName": "dev-rule",
                                        "ruleMatching": "workloadName:kube-proxy"
                                      },
                                      {
                                        "oceanId": "o-6ea3032a",
                                        "clusterIdentifier": "dev-cluster",
                                        "namespace": "kube-system",
                                        "resourceType": "Deployment",
                                        "name": "spotinst-controller",
                                        "ruleName": "dev-rule",
                                        "ruleMatching": "regexName:spotinst*"
                                      }
                                    ],
                                    "items": {
                                      "description": "Rightsizing rule matching of rule to workload",
                                      "type": "object",
                                      "properties": {
                                        "oceanId": {
                                          "type": "string"
                                        },
                                        "clusterIdentifier": {
                                          "type": "string"
                                        },
                                        "namespace": {
                                          "type": "string"
                                        },
                                        "resourceType": {
                                          "type": "string"
                                        },
                                        "name": {
                                          "type": "string"
                                        },
                                        "ruleName": {
                                          "type": "string"
                                        },
                                        "ruleMatching": {
                                          "type": "string"
                                        }
                                      }
                                    }
                                  }
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/{oceanId}/rightSizing/rule/{ruleName}/detachment": {
      "post": {
        "summary": "Detach Ocean Rightsizing Rule",
        "description": "",
        "operationId": "oceanRightsizingRuleMatchingDetachment",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule~1%7BruleName%7D/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule~1%7BruleName%7D~1attachment/post/requestBody/content/application~1json/schema/allOf/0"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Rightsizing Rule Detached Workload Names Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/{oceanId}/rightSizing/rule/{ruleName}/detachment"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "workloadNames": {
                                    "type": "array",
                                    "example": [
                                      "kube-proxy",
                                      "spotinst-controller"
                                    ],
                                    "items": {
                                      "type": "string"
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "mcs:ocean:rightsizing:rule"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/{oceanId}/rightSizing/recommendations": {
      "post": {
        "summary": "Get Ocean Rightsizing Recommendations",
        "description": "Get right-sizing recommendations for an Ocean cluster.\n",
        "operationId": "oceanRightsizingRecommendations",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Ocean Rightsizing Recommendations",
                    "description": "Determines the Ocean Rightsizing recommendations\n",
                    "required": [
                      "clusterResources OR clusterLabels"
                    ],
                    "properties": {
                      "clusterResources": {
                        "type": "object",
                        "title": "Ocean Rightsizing Recommendation Cluster Resources",
                        "description": "Determines the Ocean Recommendation filtering by the combinations of namespace::workload::containers\n",
                        "properties": {
                          "namespaceName": {
                            "description": "Determines the namespace to filter by with objects of it's workloads",
                            "type": "object",
                            "properties": {
                              "workloadName": {
                                "description": "Determines the workload to filter by with List of it's containers",
                                "type": "array",
                                "items": {
                                  "type": "string",
                                  "properties": {
                                    "containerName": {
                                      "type": "string",
                                      "description": "container name",
                                      "example": "workloadContainer1"
                                    }
                                  }
                                }
                              }
                            }
                          }
                        },
                        "example": {
                          "namespaceName1": {
                            "workloadName1": [
                              "workloadContainer1",
                              "workloadContainer2"
                            ],
                            "workloadName2": [
                              "workloadContainer2",
                              "workloadContainer3"
                            ]
                          },
                          "namespaceName2": {
                            "workloadName1": [
                              "workloadContainer1",
                              "workloadContainer2"
                            ]
                          }
                        }
                      },
                      "clusterLabels": {
                        "type": "object",
                        "title": "Ocean Rightsizing Recommendation Cluster Labels",
                        "description": "Determines the Ocean Recommendation filtering by the combinations of namespace::workloadsLabels\n",
                        "properties": {
                          "namespaceName": {
                            "description": "Determines the namespace to filter by with List of it's workloads labels",
                            "type": "array",
                            "properties": {
                              "containerName": {
                                "type": "string",
                                "description": "container name",
                                "example": "workloadContainer1"
                              }
                            }
                          }
                        },
                        "example": {
                          "namespaceName1": [
                            "workloadLabel1",
                            "workloadLabel2",
                            "workloadLabel3"
                          ],
                          "namespaceName2": [
                            "workloadLabel1",
                            "workloadLabel2"
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Rightsizing Recommendation Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/o-abcd1234/rightSizing/recommendations"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Ocean Rightsizing Recommendation",
                                "description": "Rightsizing Resource Container Recommendation.\n",
                                "properties": {
                                  "namespace": {
                                    "type": "string",
                                    "description": "The namespace of the workload"
                                  },
                                  "workloadName": {
                                    "type": "string",
                                    "description": "The name of the workload"
                                  },
                                  "workloadType": {
                                    "type": "string",
                                    "description": "The type of the workload"
                                  },
                                  "requestedCPU": {
                                    "type": "number",
                                    "description": "The requested cpu"
                                  },
                                  "suggestedCPU": {
                                    "type": "integer",
                                    "description": "The suggested cpu"
                                  },
                                  "requestedMemory": {
                                    "type": "number",
                                    "description": "The requested memory"
                                  },
                                  "suggestedMemory": {
                                    "type": "integer",
                                    "description": "The requested memory"
                                  },
                                  "monthlyMaxSavings\"": {
                                    "type": "number",
                                    "description": "The monthly potential savings"
                                  },
                                  "ruleName": {
                                    "type": "string",
                                    "description": "The name of the attached rule"
                                  },
                                  "optimizationStatus": {
                                    "type": "string",
                                    "description": "The optimization status of the workload"
                                  },
                                  "reasonsForPartialOptimized": {
                                    "type": "array",
                                    "description": "The reasons for the partly optimized status",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "containers": {
                                    "type": "array",
                                    "description": "The containers of the workload",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string",
                                          "description": "The name of the container"
                                        },
                                        "requestedCPU": {
                                          "type": "number",
                                          "description": "The requested cpu"
                                        },
                                        "suggestedCPU": {
                                          "type": "integer",
                                          "description": "The suggested cpu"
                                        },
                                        "requestedMemory": {
                                          "type": "number",
                                          "description": "The requested memory"
                                        },
                                        "suggestedMemory": {
                                          "type": "integer",
                                          "description": "The requested memory"
                                        },
                                        "preliminary": {
                                          "type": "boolean",
                                          "description": "The recommendation is preliminary"
                                        },
                                        "appliedAt": {
                                          "type": "string",
                                          "format": "date-time",
                                          "description": "The timestamp at which the recommendation was applied"
                                        }
                                      }
                                    }
                                  },
                                  "appliedAt": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "The timestamp at which the recommendation was last applied"
                                  }
                                }
                              },
                              "example": [
                                {
                                  "namespace": "kube-system",
                                  "workloadName": "redis-controller",
                                  "workloadType": "deployment",
                                  "requestedCPU": 50,
                                  "suggestedCPU": 4,
                                  "requestedMemory": 50,
                                  "suggestedMemory": 19,
                                  "monthlyMaxSavings\"": 17.312044994154263,
                                  "ruleName": "attachedRule",
                                  "optimizationStatus": "PARTLY_OPTIMIZED",
                                  "reasonsForPartialOptimized": [
                                    "Threshold did not allow us to apply the recommendation",
                                    "The ranges of the rule prevent the apply of the recommendations",
                                    "Recommendation did not perform due to preliminary exclusion"
                                  ],
                                  "containers": [
                                    {
                                      "name": "dnsmasq",
                                      "requestedCPU": 10,
                                      "suggestedCPU": 2,
                                      "requestedMemory": 40,
                                      "suggestedMemory": 15,
                                      "preliminary": false,
                                      "appliedAt": "2026-04-24T04:55:22.043813"
                                    },
                                    {
                                      "name": "sidecar",
                                      "requestedCPU": 40,
                                      "suggestedCPU": 2,
                                      "requestedMemory": 10,
                                      "suggestedMemory": 4,
                                      "preliminary": true,
                                      "appliedAt": "2026-04-24T04:55:22.043813"
                                    }
                                  ],
                                  "appliedAt": "2026-04-24T04:55:22.043813"
                                },
                                {
                                  "namespace": "sparkSpace",
                                  "workloadName": "test-redis",
                                  "workloadType": "deployment",
                                  "requestedCPU": 50,
                                  "suggestedCPU": 2,
                                  "requestedMemory": 30,
                                  "suggestedMemory": 20,
                                  "monthlyMaxSavings": 28.258386736965104,
                                  "ruleName": null,
                                  "optimizationStatus": "NOT_OPTIMIZED",
                                  "containers": [
                                    {
                                      "name": "dns-controller",
                                      "requestedCPU": 20,
                                      "suggestedCPU": 1,
                                      "requestedMemory": 20,
                                      "suggestedMemory": 15,
                                      "preliminary": false,
                                      "appliedAt": "2026-04-24T04:55:22.043813"
                                    },
                                    {
                                      "name": "kubedns",
                                      "requestedCPU": 30,
                                      "suggestedCPU": 1,
                                      "requestedMemory": 10,
                                      "suggestedMemory": 5,
                                      "preliminary": true,
                                      "appliedAt": "2026-04-24T04:55:22.043813"
                                    }
                                  ],
                                  "appliedAt": "2026-04-24T04:55:22.043813"
                                }
                              ]
                            },
                            "count": {
                              "example": 2
                            },
                            "kind": {
                              "example": "mcs:ocean:rightSizing:recommendations"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/{oceanId}/rightSizing/namespaces/{namespace}/{workloadType}/{workloadName}/recommendation-history": {
      "get": {
        "summary": "Get Ocean Rightsizing Recommendation History",
        "description": "Get right-sizing recommendation history for a specific workload in an Ocean cluster.\n",
        "operationId": "oceanRightsizingRecommendationHistory",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "in": "path",
            "name": "namespace",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "default",
            "description": "Namespace of the workload.\n"
          },
          {
            "in": "path",
            "name": "workloadType",
            "schema": {
              "type": "string",
              "enum": [
                "deployment",
                "daemonSet",
                "statefulSet",
                "rollout"
              ]
            },
            "required": true,
            "example": "deployment",
            "description": "Type of the workload.\n"
          },
          {
            "in": "path",
            "name": "workloadName",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "checkout-service",
            "description": "Name of the workload.\n"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "clusterIdentifier",
            "schema": {
              "type": "string"
            },
            "required": false,
            "example": "dev-cluster",
            "description": "Identifier of the cluster from which recommendation history should be retrieved.\n"
          },
          {
            "in": "query",
            "name": "fromDate",
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "required": true,
            "example": 1717200000000,
            "description": "Start time filter as Unix epoch timestamp in milliseconds.\n"
          },
          {
            "in": "query",
            "name": "toDate",
            "schema": {
              "type": "integer",
              "format": "int64"
            },
            "required": false,
            "example": 1719800000000,
            "description": "End time filter as Unix epoch timestamp in milliseconds.\n"
          },
          {
            "in": "query",
            "name": "containerNames",
            "required": true,
            "description": "List of container names to filter by.\n",
            "style": "form",
            "explode": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "app",
              "sidecar"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Rightsizing Recommendation History Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/o-abcd1234/rightSizing/namespaces/default/deployment/checkout-service/recommendation-history?accountId=act-123456789&fromDate=1717200000000&clusterIdentifier=dev-cluster"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "recommendations": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "title": "Ocean Rightsizing Recommendation History Item",
                                      "description": "Recommendation snapshot for a workload at a specific point in time.\n",
                                      "properties": {
                                        "podCount": {
                                          "type": "integer",
                                          "description": "Number of pods in the workload at recommendation time."
                                        },
                                        "cpu": {
                                          "type": "object",
                                          "description": "CPU recommendation details.",
                                          "properties": {
                                            "requested": {
                                              "type": "number"
                                            },
                                            "recommended": {
                                              "type": "number"
                                            },
                                            "limit": {
                                              "type": "number"
                                            },
                                            "p99": {
                                              "type": "number"
                                            },
                                            "p95": {
                                              "type": "number"
                                            },
                                            "p90": {
                                              "type": "number"
                                            },
                                            "p85": {
                                              "type": "number"
                                            }
                                          }
                                        },
                                        "memory": {
                                          "type": "object",
                                          "description": "Memory recommendation details.",
                                          "properties": {
                                            "requested": {
                                              "type": "number"
                                            },
                                            "recommended": {
                                              "type": "number"
                                            },
                                            "limit": {
                                              "type": "number"
                                            },
                                            "p100": {
                                              "type": "number"
                                            },
                                            "p95": {
                                              "type": "number"
                                            },
                                            "p90": {
                                              "type": "number"
                                            },
                                            "p85": {
                                              "type": "number"
                                            }
                                          }
                                        },
                                        "recommendedAt": {
                                          "type": "integer",
                                          "format": "int64",
                                          "description": "Unix epoch timestamp in milliseconds when the recommendation was generated."
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "example": [
                                {
                                  "recommendations": [
                                    {
                                      "podCount": 1,
                                      "cpu": {
                                        "requested": 0.01,
                                        "recommended": 0.01,
                                        "limit": 0.02,
                                        "p99": 0,
                                        "p95": 0,
                                        "p90": 0,
                                        "p85": 0
                                      },
                                      "memory": {
                                        "requested": 32,
                                        "recommended": 32,
                                        "limit": 64,
                                        "p100": 7.59,
                                        "p95": 7.56,
                                        "p90": 7.56,
                                        "p85": 7.53
                                      },
                                      "recommendedAt": 1783313815984
                                    }
                                  ]
                                }
                              ]
                            },
                            "count": {
                              "example": 1
                            },
                            "kind": {
                              "example": "mcs:ocean:rightSizing:clusterResourceRecommendationsHistory"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/{oceanId}/rightSizing/rollbacks": {
      "get": {
        "summary": "List Ocean Rightsizing Rollbacks",
        "description": "List the rightsizing rollback for ocean cluster.",
        "operationId": "oceanRightsizingRollbackList",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Rightsizing Rollbacks Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/{oceanId}/rightSizing/rollbacks"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "clusterIdentifier": {
                                    "type": "string",
                                    "description": "The cluster identifier",
                                    "example": "test-k8s"
                                  },
                                  "namespace": {
                                    "type": "string",
                                    "description": "The namespace of the workload",
                                    "example": "kube-system"
                                  },
                                  "resourceType": {
                                    "type": "string",
                                    "description": "The type of the resource",
                                    "example": "deployment"
                                  },
                                  "resourceName": {
                                    "type": "string",
                                    "description": "The name of the resource",
                                    "example": "resource-name"
                                  },
                                  "rollbackType": {
                                    "type": "string",
                                    "description": "The type of the rollback",
                                    "example": "OUT_OF_MEMORY"
                                  },
                                  "rollbackTime": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "The time of the rollback",
                                    "example": "2024-11-01T10:50:29.000+0000"
                                  },
                                  "cpuAtRollback": {
                                    "type": "number",
                                    "description": "The cpu at the time of the rollback",
                                    "example": 0.23
                                  },
                                  "cpuAfterRollback": {
                                    "type": "number",
                                    "description": "The cpu after the rollback",
                                    "example": 0.33
                                  },
                                  "memoryAtRollback": {
                                    "type": "number",
                                    "description": "The memory at the time of the rollback",
                                    "example": 128
                                  },
                                  "memoryAfterRollback": {
                                    "type": "number",
                                    "description": "The memory after the rollback",
                                    "example": 185
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "mcs:ocean:rightsizing:rollback"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/{oceanId}/rightSizing/rollbacks/acknowledge": {
      "post": {
        "summary": "Acknowledge Rightsizing Rollbacks",
        "description": "Acknowledge rightsizing rollbacks For ocean cluster.\n",
        "operationId": "AcknowledgeRightsizingRollbacks",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1cluster~1configuration/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "acknowledgeRollbacks": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "namespace": {
                              "type": "string",
                              "description": "The namespace of the workload",
                              "example": "kube-system"
                            },
                            "resourceType": {
                              "type": "string",
                              "description": "The type of the resource",
                              "example": "deployment"
                            },
                            "resourceName": {
                              "type": "string",
                              "description": "The name of the resource",
                              "example": "resource-name"
                            }
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Rightsizing Acknowledge Rollbacks Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/{oceanId}/rightSizing/cluster/configuration": {
      "post": {
        "summary": "Set Rightsizing Cluster configuration",
        "description": "Set Cluster Configuration for the Ocean Cluster.\n<br />\n<br />\n**This action can take a few minutes to complete.**\n",
        "operationId": "SetClusterConfiguration",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1cluster~1configuration/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "required": [
                      "config"
                    ],
                    "properties": {
                      "config": {
                        "type": "object",
                        "minProperties": 1,
                        "properties": {
                          "recommendationsCpuPercentile": {
                            "type": "integer",
                            "description": "Change the cpu percentile that the right-sizing recommendations calculation will take into account.",
                            "example": 85,
                            "enum": [
                              85,
                              90,
                              95,
                              99
                            ]
                          },
                          "recommendationsMemoryPercentile": {
                            "type": "integer",
                            "description": "Change the memory percentile that the right-sizing recommendations calculation will take into account.",
                            "example": 85,
                            "enum": [
                              85,
                              90,
                              95,
                              100
                            ]
                          },
                          "downsideOnly": {
                            "type": "boolean",
                            "description": "When set to 'true', only downscale recommendations will be applied.",
                            "example": false,
                            "default": false
                          },
                          "adjustLimitOnDownsize": {
                            "type": "boolean",
                            "description": "When set to 'true', the limit will be adjusted when downscale recommendations are applied.",
                            "example": true,
                            "default": false
                          }
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean Cluster configuration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/{oceanId}/rightSizing/cluster/configuration"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "oceanId": {
                                    "type": "string",
                                    "example": "o-abcd1234"
                                  },
                                  "clusterIdentifier": {
                                    "type": "string",
                                    "example": "dev-cluster"
                                  },
                                  "config": {
                                    "type": "object",
                                    "properties": {
                                      "recommendationsCpuPercentile": {
                                        "type": "integer",
                                        "example": 85
                                      },
                                      "recommendationsMemoryPercentile": {
                                        "type": "integer",
                                        "example": 85
                                      },
                                      "downsideOnly": {
                                        "type": "boolean",
                                        "example": false
                                      },
                                      "adjustLimitOnDownsize": {
                                        "type": "boolean",
                                        "example": true
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "mcs:ocean:rightSizing:clusterConfiguration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "get": {
        "summary": "Get Rightsizing Cluster configuration",
        "description": "Get Cluster Configuration for the Ocean Cluster.\n<br />\n<br />\n**This action can take a few minutes to complete.**\n",
        "operationId": "GetClusterConfiguration",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "in": "query",
            "name": "clusterIdentifier",
            "schema": {
              "type": "string"
            },
            "required": true,
            "example": "dev-cluster",
            "description": "Identifier of cluster.\n"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Cluster configuration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/{oceanId}/rightSizing/cluster/configuration"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "oceanId": {
                                    "type": "string",
                                    "example": "o-abcd1234"
                                  },
                                  "clusterIdentifier": {
                                    "type": "string",
                                    "example": "dev-cluster"
                                  },
                                  "config": {
                                    "type": "object",
                                    "properties": {
                                      "recommendationsCpuPercentile": {
                                        "type": "integer",
                                        "example": 85
                                      },
                                      "recommendationsMemoryPercentile": {
                                        "type": "integer",
                                        "example": 85
                                      },
                                      "downsideOnly": {
                                        "type": "boolean",
                                        "example": false
                                      },
                                      "adjustLimitOnDownsize": {
                                        "type": "boolean",
                                        "example": true
                                      }
                                    }
                                  }
                                }
                              }
                            },
                            "kind": {
                              "example": "mcs:ocean:rightSizing:clusterConfiguration"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/{oceanId}/rightSizing/savings": {
      "post": {
        "summary": "Get Ocean Right-Sizing Savings",
        "description": "Get right-sizing savings from downsizing operations for an Ocean cluster.\n",
        "operationId": "oceanRightsizingSavings",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "title": "Ocean Right-Sizing Savings",
                    "description": "Determines the Ocean right-sizing savings\n",
                    "required": [
                      "clusterIdentifier",
                      "endTime",
                      "startTime",
                      "workloads"
                    ],
                    "properties": {
                      "clusterIdentifier": {
                        "type": "string",
                        "example": "my-cluster",
                        "description": "Identifier of the Ocean cluster.\n"
                      },
                      "startTime": {
                        "type": "string",
                        "example": "2025-01-20T11:35:02.745Z",
                        "description": "Start date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "endTime": {
                        "type": "string",
                        "example": "2025-01-30T11:30:01.745Z",
                        "description": "End date value using either the date format \"yyyy-MM-dd'T'HH:mm:ss'Z'\" or ms \"1494751821472\".\n"
                      },
                      "workloads": {
                        "title": "Ocean Right-Sizing Savings Workloads",
                        "description": "Determines the Ocean Savings filtering by the combinations of namespace::workload\n",
                        "type": "object",
                        "properties": {
                          "namespaceName": {
                            "type": "object",
                            "additionalProperties": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "name": {
                                    "type": "string",
                                    "description": "The name of the workload"
                                  },
                                  "workloadType": {
                                    "type": "string",
                                    "description": "The type of the workload (e.g., Deployment, DaemonSet, StatefulSet)"
                                  }
                                }
                              }
                            }
                          }
                        },
                        "example": {
                          "namespaceName1": [
                            {
                              "name": "workloadName1",
                              "workloadType": "Deployment"
                            },
                            {
                              "name": "workloadName2",
                              "workloadType": "DaemonSet"
                            }
                          ],
                          "namespaceName2": [
                            {
                              "name": "workloadName3",
                              "workloadType": "StatefulSet"
                            },
                            {
                              "name": "workloadName4",
                              "workloadType": "Deployment"
                            }
                          ]
                        }
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Ocean right-sizing savings response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/o-abcd1234/rightSizing/savings"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Ocean Right-Sizing Savings Response",
                                "description": "Right-sizing savings response object\n",
                                "properties": {
                                  "totalSavingsSummary": {
                                    "type": "object",
                                    "description": "A summary of the savings for all the workloads in the response",
                                    "properties": {
                                      "cpuWithOcean": {
                                        "type": "number"
                                      },
                                      "memoryWithOcean": {
                                        "type": "number"
                                      },
                                      "savings": {
                                        "type": "number"
                                      },
                                      "percentage": {
                                        "type": "number"
                                      }
                                    }
                                  },
                                  "namespacesSavingsSummary": {
                                    "type": "array",
                                    "description": "A summary of the savings for each namespace in the response",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "namespace": {
                                          "type": "string"
                                        },
                                        "savings": {
                                          "type": "number"
                                        }
                                      }
                                    }
                                  },
                                  "workloadSavings": {
                                    "type": "array",
                                    "description": "A list of the savings for each workload in the response",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "name": {
                                          "type": "string"
                                        },
                                        "workloadType": {
                                          "type": "string"
                                        },
                                        "namespace": {
                                          "type": "string"
                                        },
                                        "cpuWithOcean": {
                                          "type": "number"
                                        },
                                        "cpuWithoutOcean": {
                                          "type": "number"
                                        },
                                        "memoryWithOcean": {
                                          "type": "number"
                                        },
                                        "memoryWithoutOcean": {
                                          "type": "number"
                                        },
                                        "savings": {
                                          "type": "number"
                                        },
                                        "workloadDeleted": {
                                          "type": "boolean"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "example": [
                                {
                                  "totalSavingsSummary": {
                                    "cpuWithOcean": "100,",
                                    "memoryWithOcean": "128,",
                                    "savings": "1000,",
                                    "percentage": 0.75
                                  },
                                  "namespacesSavingsSummary": [
                                    {
                                      "namespace": "kube-system",
                                      "savings": 500
                                    },
                                    {
                                      "namespace": "default",
                                      "savings": 500
                                    }
                                  ],
                                  "workloadSavings": [
                                    {
                                      "name": "coredns",
                                      "workloadType": "Deployment",
                                      "namespace": "kube-system",
                                      "cpuWithOcean": 25,
                                      "cpuWithoutOcean": 50,
                                      "memoryWithOcean": 32,
                                      "memoryWithoutOcean": 64,
                                      "savings": 250,
                                      "workloadDeleted": true
                                    },
                                    {
                                      "name": "aws-node",
                                      "workloadType": "DaemonSet",
                                      "namespace": "kube-system",
                                      "cpuWithOcean": 25,
                                      "cpuWithoutOcean": 50,
                                      "memoryWithOcean": 32,
                                      "memoryWithoutOcean": 64,
                                      "savings": 250,
                                      "workloadDeleted": false
                                    }
                                  ]
                                }
                              ]
                            },
                            "count": {
                              "example": 1
                            },
                            "kind": {
                              "example": "mcs:ocean:rightSizing:savings"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    },
    "/ocean/{oceanId}/rightSizing/namespaces/{namespace}/{workloadType}/{workloadName}/recommendation-application-history": {
      "get": {
        "summary": "Get Workload Recommendation Application History",
        "description": "Returns a set of recommendation application history records associated with workload.\n",
        "operationId": "getWorkloadRecommendationApplicationHistory",
        "tags": [
          "Ocean Automatic Rightsizing"
        ],
        "parameters": [
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1rule/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1namespaces~1%7Bnamespace%7D~1%7BworkloadType%7D~1%7BworkloadName%7D~1recommendation-history/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1namespaces~1%7Bnamespace%7D~1%7BworkloadType%7D~1%7BworkloadName%7D~1recommendation-history/get/parameters/2"
          },
          {
            "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1namespaces~1%7Bnamespace%7D~1%7BworkloadType%7D~1%7BworkloadName%7D~1recommendation-history/get/parameters/3"
          },
          {
            "$ref": "#/paths/~1azure~1costs/get/parameters/0"
          },
          {
            "in": "query",
            "name": "offset",
            "schema": {
              "type": "integer",
              "format": "int16",
              "default": 0,
              "minimum": 0,
              "example": 0
            },
            "required": false,
            "description": "Number of entries to skip before returning page.\n"
          },
          {
            "in": "query",
            "name": "limit",
            "schema": {
              "type": "integer",
              "format": "int16",
              "default": 100,
              "minimum": 1,
              "maximum": 200
            },
            "required": false,
            "example": 100,
            "description": "Number of entries to return.\n"
          }
        ],
        "responses": {
          "200": {
            "description": "Ocean Rightsizing Recommendation Application History Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/ocean/o-abcd1234/rightSizing/namespaces/kube-system/deployment/redis-controller/recommendation-application-history"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "kind": {
                              "example": "mcs:ocean:rightSizing:recommendationApplicationHistory"
                            },
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "title": "Recommendation Application History",
                                "description": "A page of recommendation application history records.\n",
                                "properties": {
                                  "page": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "title": "Recommendation Application Item",
                                      "description": "A single recommendation application history record for a container.\n",
                                      "properties": {
                                        "containerName": {
                                          "type": "string",
                                          "description": "Name of the container.",
                                          "example": "my-app-container"
                                        },
                                        "actionType": {
                                          "type": "string",
                                          "description": "The type of action that was taken or the reason it was not applied.",
                                          "enum": [
                                            "APPLIED",
                                            "CPU_ONLY_APPLIED",
                                            "MEMORY_ONLY_APPLIED",
                                            "OUTSIDE_OF_TIME_WINDOW",
                                            "THRESHOLD_NOT_MET",
                                            "HPA_RESTRICTED",
                                            "UNSUPPORTED_HPA",
                                            "INVALID_HPA",
                                            "PRELIMINARY_RESTRICTED"
                                          ],
                                          "example": "APPLIED"
                                        },
                                        "currentResources": {
                                          "type": "object",
                                          "title": "Compute Resource",
                                          "description": "Represents CPU and memory resource values.\n",
                                          "properties": {
                                            "cpu": {
                                              "type": "integer",
                                              "format": "int32",
                                              "description": "CPU resource value in millicores.",
                                              "example": 4000
                                            },
                                            "memory": {
                                              "type": "integer",
                                              "format": "int32",
                                              "description": "Memory resource value in MiB.",
                                              "example": 16000
                                            }
                                          }
                                        },
                                        "recommendedResources": {
                                          "$ref": "#/paths/~1ocean~1%7BoceanId%7D~1rightSizing~1namespaces~1%7Bnamespace%7D~1%7BworkloadType%7D~1%7BworkloadName%7D~1recommendation-application-history/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/properties/page/items/properties/currentResources"
                                        },
                                        "occurredAt": {
                                          "type": "integer",
                                          "format": "int64",
                                          "description": "Timestamp (epoch millis) when the action occurred.",
                                          "example": 1776178797289
                                        },
                                        "ruleName": {
                                          "type": "string",
                                          "description": "Name of the rightsizing rule that triggered this action.",
                                          "example": "my-app-rule"
                                        }
                                      }
                                    }
                                  }
                                }
                              },
                              "example": [
                                {
                                  "page": [
                                    {
                                      "containerName": "my-app-container",
                                      "actionType": "APPLIED",
                                      "currentResources": {
                                        "cpu": 4000,
                                        "memory": 16000
                                      },
                                      "recommendedResources": {
                                        "cpu": 2000,
                                        "memory": 8000
                                      },
                                      "occurredAt": 1776178797289,
                                      "ruleName": "my-app-rule"
                                    }
                                  ]
                                }
                              ]
                            },
                            "count": {
                              "example": 1
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request provided"
          },
          "404": {
            "description": "Non existent resource has been queried"
          },
          "422": {
            "description": "Business rule violated"
          }
        }
      }
    },
    "/security/v1/compliances": {
      "get": {
        "description": "A cyber security compliance determines how compliant an asset is. It checks against specific security standards.\nThis API returns list of all compliances supported in Spot.\nA compliance consists of one or more controls.",
        "operationId": "get_compliances_v1_compliances_get",
        "parameters": [
          {
            "description": "Token of the page to return.",
            "in": "query",
            "name": "paginationKey",
            "required": false,
            "schema": {
              "description": "Token of the page to return.",
              "title": "Paginationkey",
              "type": "string"
            }
          },
          {
            "description": "Number of items to return per page.",
            "in": "query",
            "name": "paginationSize",
            "required": false,
            "schema": {
              "default": 100,
              "description": "Number of items to return per page.",
              "maximum": 100,
              "minimum": 1,
              "title": "Paginationsize",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "error": {
                      "allOf": [
                        {
                          "properties": {
                            "code": {
                              "title": "Code",
                              "type": "string"
                            },
                            "message": {
                              "title": "Message",
                              "type": "string"
                            }
                          },
                          "required": [
                            "code",
                            "message"
                          ],
                          "title": "ErrorModel",
                          "type": "object"
                        }
                      ],
                      "title": "Error"
                    },
                    "request": {
                      "properties": {
                        "body": {
                          "title": "Body",
                          "type": "object"
                        },
                        "id": {
                          "title": "Id",
                          "type": "string"
                        },
                        "method": {
                          "title": "Method",
                          "type": "string"
                        },
                        "queryParameters": {
                          "title": "Queryparameters",
                          "type": "object"
                        },
                        "timestamp": {
                          "title": "Timestamp",
                          "type": "string"
                        },
                        "url": {
                          "title": "Url",
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "url",
                        "method",
                        "queryParameters",
                        "body",
                        "timestamp"
                      ],
                      "title": "RequestModel",
                      "type": "object"
                    },
                    "response": {
                      "allOf": [
                        {
                          "properties": {
                            "count": {
                              "default": 0,
                              "description": "The number of items.",
                              "title": "Count",
                              "type": "integer"
                            },
                            "items": {
                              "description": "The array of objects in this response. The length of the array is according to the 'count' attribute.",
                              "items": {
                                "properties": {
                                  "complianceName": {
                                    "title": "Compliancename",
                                    "type": "string"
                                  }
                                },
                                "title": "ComplianceModel",
                                "type": "object"
                              },
                              "title": "Items",
                              "type": "array"
                            },
                            "paginationInfo": {
                              "properties": {
                                "nextKey": {
                                  "description": "Each API call has a unique token. This is the token for the next page of results.",
                                  "title": "Nextkey",
                                  "type": "string"
                                },
                                "paginationSize": {
                                  "description": "The maximum number of items in the page. The attribute 'item' indicates the actual number of items in the page.",
                                  "title": "Paginationsize",
                                  "type": "integer"
                                },
                                "previousKey": {
                                  "description": "Each API call has a unique token. This is the token for the previous page of results.",
                                  "title": "Previouskey",
                                  "type": "string"
                                }
                              },
                              "title": "PaginationModel",
                              "type": "object"
                            },
                            "status": {
                              "properties": {
                                "code": {
                                  "title": "Code",
                                  "type": "integer"
                                },
                                "message": {
                                  "title": "Message",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "code",
                                "message"
                              ],
                              "title": "StatusModel",
                              "type": "object"
                            }
                          },
                          "required": [
                            "status",
                            "items",
                            "paginationInfo"
                          ],
                          "title": "PaginatedResponse[ComplianceModel]",
                          "type": "object"
                        }
                      ]
                    },
                    "responseTime": {
                      "title": "Responsetime",
                      "type": "number"
                    }
                  },
                  "required": [
                    "request"
                  ],
                  "title": "SpotResponse[PaginatedResponse[ComplianceModel]]",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "detail": {
                      "items": {
                        "properties": {
                          "loc": {
                            "items": {
                              "anyOf": [
                                {
                                  "type": "string"
                                },
                                {
                                  "type": "integer"
                                }
                              ]
                            },
                            "title": "Location",
                            "type": "array"
                          },
                          "msg": {
                            "title": "Message",
                            "type": "string"
                          },
                          "type": {
                            "title": "Error Type",
                            "type": "string"
                          }
                        },
                        "required": [
                          "loc",
                          "msg",
                          "type"
                        ],
                        "title": "ValidationError",
                        "type": "object"
                      },
                      "title": "Detail",
                      "type": "array"
                    }
                  },
                  "title": "HTTPValidationError",
                  "type": "object"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Compliances",
        "tags": [
          "Compliance"
        ]
      },
      "parameters": []
    },
    "/security/v1/compliances/count": {
      "get": {
        "description": "Get the total number of compliances.",
        "operationId": "get_compliance_count_v1_compliances_count_get",
        "parameters": [],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "error": {
                      "allOf": [
                        {
                          "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/error/allOf/0"
                        }
                      ],
                      "title": "Error"
                    },
                    "request": {
                      "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/request"
                    },
                    "response": {
                      "allOf": [
                        {
                          "properties": {
                            "count": {
                              "default": 0,
                              "description": "The number of items.",
                              "title": "Count",
                              "type": "integer"
                            },
                            "items": {
                              "description": "The array of objects in this response. The length of the array is according to the 'count' attribute.",
                              "items": {
                                "properties": {
                                  "value": {
                                    "description": "The number of items.",
                                    "title": "Value",
                                    "type": "integer"
                                  }
                                },
                                "required": [
                                  "value"
                                ],
                                "title": "CountModel",
                                "type": "object"
                              },
                              "title": "Items",
                              "type": "array"
                            },
                            "status": {
                              "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/response/allOf/0/properties/status"
                            }
                          },
                          "required": [
                            "status",
                            "items"
                          ],
                          "title": "BaseResponse[CountModel]",
                          "type": "object"
                        }
                      ]
                    },
                    "responseTime": {
                      "title": "Responsetime",
                      "type": "number"
                    }
                  },
                  "required": [
                    "request"
                  ],
                  "title": "SpotResponse[BaseResponse[CountModel]]",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          }
        },
        "summary": "Get Compliance Count",
        "tags": [
          "Compliance"
        ]
      },
      "parameters": []
    },
    "/security/v1/compliances/{complianceName}/controls": {
      "get": {
        "description": "A control is countermeasures to avoid, detect, counteract, or minimize security risks of cloud assets.\nA control may be part of one or more compliances. A control is verified in one or more rules.\nThis API returns the list of controls mapped to a specific compliance.",
        "operationId": "get_compliance_controls_v1_compliances__complianceName__controls_get",
        "parameters": [
          {
            "description": "The name of the cyber security compliance.",
            "example": "SOC_2",
            "in": "path",
            "name": "complianceName",
            "required": true,
            "schema": {
              "description": "The name of the cyber security compliance.",
              "title": "Compliancename",
              "type": "string"
            }
          },
          {
            "description": "If this is not a manual control, the value is True.",
            "in": "query",
            "name": "isAutomated",
            "required": false,
            "schema": {
              "description": "If this is not a manual control, the value is True.",
              "title": "Isautomated",
              "type": "boolean"
            }
          },
          {
            "$ref": "#/paths/~1security~1v1~1compliances/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1security~1v1~1compliances/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "error": {
                      "allOf": [
                        {
                          "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/error/allOf/0"
                        }
                      ],
                      "title": "Error"
                    },
                    "request": {
                      "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/request"
                    },
                    "response": {
                      "allOf": [
                        {
                          "properties": {
                            "count": {
                              "default": 0,
                              "description": "The number of items.",
                              "title": "Count",
                              "type": "integer"
                            },
                            "items": {
                              "description": "The array of objects in this response. The length of the array is according to the 'count' attribute.",
                              "items": {
                                "properties": {
                                  "controlId": {
                                    "title": "Controlid",
                                    "type": "string"
                                  },
                                  "description": {
                                    "title": "Description",
                                    "type": "string"
                                  },
                                  "isAutomated": {
                                    "title": "Isautomated",
                                    "type": "boolean"
                                  }
                                },
                                "title": "ControlModel",
                                "type": "object"
                              },
                              "title": "Items",
                              "type": "array"
                            },
                            "paginationInfo": {
                              "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/response/allOf/0/properties/paginationInfo"
                            },
                            "status": {
                              "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/response/allOf/0/properties/status"
                            }
                          },
                          "required": [
                            "status",
                            "items",
                            "paginationInfo"
                          ],
                          "title": "PaginatedResponse[ControlModel]",
                          "type": "object"
                        }
                      ]
                    },
                    "responseTime": {
                      "title": "Responsetime",
                      "type": "number"
                    }
                  },
                  "required": [
                    "request"
                  ],
                  "title": "SpotResponse[PaginatedResponse[ControlModel]]",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1security~1v1~1compliances/get/responses/422/content/application~1json/schema"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Compliance Controls",
        "tags": [
          "Compliance"
        ]
      },
      "parameters": []
    },
    "/security/v1/compliances/{complianceName}/controls/count": {
      "get": {
        "description": "Get the total number of controls for the selected compliance.",
        "operationId": "get_compliance_controls_count_v1_compliances__complianceName__controls_count_get",
        "parameters": [
          {
            "$ref": "#/paths/~1security~1v1~1compliances~1%7BcomplianceName%7D~1controls/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1security~1v1~1compliances~1%7BcomplianceName%7D~1controls/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1security~1v1~1compliances~1count/get/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1security~1v1~1compliances/get/responses/422/content/application~1json/schema"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Compliance Controls Count",
        "tags": [
          "Compliance"
        ]
      },
      "parameters": []
    },
    "/security/v1/misconfigurations": {
      "get": {
        "description": "This API returns the list of assets that have misconfigurations.",
        "operationId": "get_misconfigurations_v1_misconfigurations_get",
        "parameters": [
          {
            "in": "query",
            "name": "cloud",
            "required": true,
            "schema": {
              "description": "Enumeration of supported cloud providers.",
              "enum": [
                "aws",
                "azure"
              ],
              "title": "CloudProvider",
              "type": "string"
            }
          },
          {
            "description": "A comma-separated list of cloud account IDs. For AWS this is the account ID. For Azure, this is the subscription ID.",
            "in": "query",
            "name": "accountId",
            "required": false,
            "schema": {
              "description": "A comma-separated list of cloud account IDs. For AWS this is the account ID. For Azure, this is the subscription ID.",
              "title": "Accountid",
              "type": "string"
            }
          },
          {
            "description": "A comma-separated list of cloud account IDs to exclude. For AWS this is the account ID. For Azure, this is the subscription ID.",
            "in": "query",
            "name": "notAccountId",
            "required": false,
            "schema": {
              "description": "A comma-separated list of cloud account IDs to exclude. For AWS this is the account ID. For Azure, this is the subscription ID.",
              "title": "Notaccountid",
              "type": "string"
            }
          },
          {
            "description": "A comma-separated list of cloud account names.",
            "in": "query",
            "name": "accountName",
            "required": false,
            "schema": {
              "description": "A comma-separated list of cloud account names.",
              "title": "Accountname",
              "type": "string"
            }
          },
          {
            "description": "A comma-separated list of cloud account names to exclude",
            "in": "query",
            "name": "notAccountName",
            "required": false,
            "schema": {
              "description": "A comma-separated list of cloud account names to exclude",
              "title": "Notaccountname",
              "type": "string"
            }
          },
          {
            "description": "A comma-separated list of cloud regions.",
            "example": "us-east-1",
            "in": "query",
            "name": "region",
            "required": false,
            "schema": {
              "description": "A comma-separated list of cloud regions.",
              "title": "Region",
              "type": "string"
            }
          },
          {
            "description": "A comma-separated list of cloud regions to exclude.",
            "example": "us-east-1",
            "in": "query",
            "name": "notRegion",
            "required": false,
            "schema": {
              "description": "A comma-separated list of cloud regions to exclude.",
              "title": "Notregion",
              "type": "string"
            }
          },
          {
            "description": "The date the finding was most recently found (YYYY-MM-DD).",
            "example": "1997-11-11",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "description": "The date the finding was most recently found (YYYY-MM-DD).",
              "format": "date",
              "title": "Date",
              "type": "string"
            }
          },
          {
            "description": "A comma-separated list of cloud services.",
            "in": "query",
            "name": "service",
            "required": false,
            "schema": {
              "description": "A comma-separated list of cloud services.",
              "title": "Service",
              "type": "string"
            }
          },
          {
            "description": "A comma-separated list of cloud services to exclude.",
            "in": "query",
            "name": "notService",
            "required": false,
            "schema": {
              "description": "A comma-separated list of cloud services to exclude.",
              "title": "Notservice",
              "type": "string"
            }
          },
          {
            "description": "A comma-separated list of cloud resources for the service.",
            "in": "query",
            "name": "assetType",
            "required": false,
            "schema": {
              "description": "A comma-separated list of cloud resources for the service.",
              "title": "Assettype",
              "type": "string"
            }
          },
          {
            "description": "A comma-separated list of cloud resources for the service to exclude.",
            "in": "query",
            "name": "notAssetType",
            "required": false,
            "schema": {
              "description": "A comma-separated list of cloud resources for the service to exclude.",
              "title": "Notassettype",
              "type": "string"
            }
          },
          {
            "description": "The unique name of the rule.",
            "in": "query",
            "name": "ruleName",
            "required": false,
            "schema": {
              "description": "The unique name of the rule.",
              "title": "Rulename",
              "type": "string"
            }
          },
          {
            "description": "The asset's ID (a cloud resource).",
            "in": "query",
            "name": "assetId",
            "required": false,
            "schema": {
              "description": "The asset's ID (a cloud resource).",
              "title": "Assetid",
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1security~1v1~1compliances/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1security~1v1~1compliances/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "error": {
                      "allOf": [
                        {
                          "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/error/allOf/0"
                        }
                      ],
                      "title": "Error"
                    },
                    "request": {
                      "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/request"
                    },
                    "response": {
                      "allOf": [
                        {
                          "properties": {
                            "count": {
                              "default": 0,
                              "description": "The number of items.",
                              "title": "Count",
                              "type": "integer"
                            },
                            "items": {
                              "description": "The array of objects in this response. The length of the array is according to the 'count' attribute.",
                              "items": {
                                "properties": {
                                  "organizationId": {
                                    "description": "The Spot Organization ID.",
                                    "title": "Organizationid",
                                    "type": "string"
                                  },
                                  "what": {
                                    "properties": {
                                      "args": {
                                        "description": "Certain misconfiguration rules have arguments. This field contains the arguments in the form of an comma separated array. Example: [\"MongoDB\", \"TCP\", \"27017\"]",
                                        "items": {
                                          "type": "string"
                                        },
                                        "title": "Args",
                                        "type": "array"
                                      },
                                      "isSuppressed": {
                                        "description": "If this finding is suppressed, the value is True.",
                                        "title": "Issuppressed",
                                        "type": "boolean"
                                      },
                                      "ruleDescription": {
                                        "description": "Description of the rule.",
                                        "title": "Ruledescription",
                                        "type": "string"
                                      },
                                      "ruleName": {
                                        "description": "The unique name of the rule.",
                                        "title": "Rulename",
                                        "type": "string"
                                      },
                                      "ruleTitle": {
                                        "description": "The name of the rule.",
                                        "title": "Ruletitle",
                                        "type": "string"
                                      },
                                      "severity": {
                                        "description": "The severity of the rule.",
                                        "title": "Severity",
                                        "type": "string"
                                      },
                                      "state": {
                                        "description": "The state of the misconfiguration. It is either open or closed.",
                                        "title": "State",
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "ruleName",
                                      "ruleTitle",
                                      "ruleDescription",
                                      "args",
                                      "severity",
                                      "state",
                                      "isSuppressed"
                                    ],
                                    "title": "MisconfigurationWhatModel",
                                    "type": "object"
                                  },
                                  "when": {
                                    "properties": {
                                      "lastSeen": {
                                        "description": "The date the finding was most recently found (YYYY-MM-DD).",
                                        "title": "Lastseen",
                                        "type": "string"
                                      },
                                      "suppressedAt": {
                                        "description": "When the finding was suppressed.",
                                        "format": "date-time",
                                        "title": "Suppressedat",
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "lastSeen",
                                      "suppressedAt"
                                    ],
                                    "title": "MisconfigurationWhenModel",
                                    "type": "object"
                                  },
                                  "where": {
                                    "properties": {
                                      "accountId": {
                                        "description": "A comma-separated list of cloud account IDs. For AWS this is the account ID. For Azure, this is the subscription ID.",
                                        "title": "Accountid",
                                        "type": "string"
                                      },
                                      "assetId": {
                                        "description": "The asset's ID (a cloud resource).",
                                        "title": "Assetid",
                                        "type": "string"
                                      },
                                      "assetName": {
                                        "description": "The name of the asset ID.",
                                        "title": "Assetname",
                                        "type": "string"
                                      },
                                      "assetType": {
                                        "description": "A comma-separated list of cloud resources for the service.",
                                        "title": "Assettype",
                                        "type": "string"
                                      },
                                      "findingLocation": {
                                        "description": "For a misconfiguration: the cloud resource or a subelement of the cloud resource.                        For a vulnerability: the cloud resource, an OS image, or a filename.",
                                        "title": "Findinglocation",
                                        "type": "string"
                                      },
                                      "region": {
                                        "description": "A comma-separated list of cloud regions.",
                                        "title": "Region",
                                        "type": "string"
                                      },
                                      "service": {
                                        "description": "The cloud service.",
                                        "title": "Service",
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "accountId",
                                      "service",
                                      "assetId",
                                      "assetName",
                                      "assetType",
                                      "region",
                                      "findingLocation"
                                    ],
                                    "title": "MisconfigurationWhereModel",
                                    "type": "object"
                                  },
                                  "who": {
                                    "properties": {
                                      "suppressedBy": {
                                        "description": "The user who suppressed the finding.",
                                        "title": "Suppressedby",
                                        "type": "string"
                                      }
                                    },
                                    "required": [
                                      "suppressedBy"
                                    ],
                                    "title": "MisconfigurationWhoModel",
                                    "type": "object"
                                  }
                                },
                                "required": [
                                  "organizationId",
                                  "when",
                                  "what",
                                  "where",
                                  "who"
                                ],
                                "title": "MisconfigurationModel",
                                "type": "object"
                              },
                              "title": "Items",
                              "type": "array"
                            },
                            "paginationInfo": {
                              "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/response/allOf/0/properties/paginationInfo"
                            },
                            "status": {
                              "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/response/allOf/0/properties/status"
                            }
                          },
                          "required": [
                            "status",
                            "items",
                            "paginationInfo"
                          ],
                          "title": "PaginatedResponse[MisconfigurationModel]",
                          "type": "object"
                        }
                      ]
                    },
                    "responseTime": {
                      "title": "Responsetime",
                      "type": "number"
                    }
                  },
                  "required": [
                    "request"
                  ],
                  "title": "SpotResponse[PaginatedResponse[MisconfigurationModel]]",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1security~1v1~1compliances/get/responses/422/content/application~1json/schema"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Misconfigurations",
        "tags": [
          "Misconfiguration"
        ]
      },
      "parameters": []
    },
    "/security/v1/misconfigurations/count": {
      "get": {
        "description": "This API returns a count of assets that have misconfigurations.",
        "operationId": "get_misconfigurations_count_v1_misconfigurations_count_get",
        "parameters": [
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/2"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/3"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/4"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/5"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/6"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/7"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/8"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/9"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/10"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/11"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/12"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/13"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1security~1v1~1compliances~1count/get/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1security~1v1~1compliances/get/responses/422/content/application~1json/schema"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Misconfigurations Count",
        "tags": [
          "Misconfiguration"
        ]
      },
      "parameters": []
    },
    "/security/v1/misconfigurations/rules": {
      "get": {
        "description": "Rules are configuration checks that detect misconfigurations in your cloud environment.\nRules are cloud service provider specific. A rule is mapped to one or more controls.\nThis API returns the list of rules that can determine the state of a specific control.",
        "operationId": "get_rules_v1_misconfigurations_rules_get",
        "parameters": [
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/0"
          },
          {
            "description": "The name of the cyber security compliance.",
            "example": "SOC_2",
            "in": "query",
            "name": "complianceName",
            "required": false,
            "schema": {
              "description": "The name of the cyber security compliance.",
              "title": "Compliancename",
              "type": "string"
            }
          },
          {
            "description": "The ID of the control defined in the compliance.",
            "example": "A1.2",
            "in": "query",
            "name": "controlId",
            "required": false,
            "schema": {
              "description": "The ID of the control defined in the compliance.",
              "title": "Controlid",
              "type": "string"
            }
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/8"
          },
          {
            "$ref": "#/paths/~1security~1v1~1compliances/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1security~1v1~1compliances/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "error": {
                      "allOf": [
                        {
                          "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/error/allOf/0"
                        }
                      ],
                      "title": "Error"
                    },
                    "request": {
                      "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/request"
                    },
                    "response": {
                      "allOf": [
                        {
                          "properties": {
                            "count": {
                              "default": 0,
                              "description": "The number of items.",
                              "title": "Count",
                              "type": "integer"
                            },
                            "items": {
                              "description": "The array of objects in this response. The length of the array is according to the 'count' attribute.",
                              "items": {
                                "properties": {
                                  "args": {
                                    "description": "Certain misconfiguration rules have arguments. This field contains the arguments in the form of an comma separated array. Example: [\"MongoDB\", \"TCP\", \"27017\"]",
                                    "items": {
                                      "type": "string"
                                    },
                                    "title": "Args",
                                    "type": "array"
                                  },
                                  "cloud": {
                                    "description": "The name of the cloud.",
                                    "title": "Cloud",
                                    "type": "string"
                                  },
                                  "complianceName": {
                                    "description": "The name of the cyber security compliance.",
                                    "items": {
                                      "type": "string"
                                    },
                                    "title": "Compliancename",
                                    "type": "array"
                                  },
                                  "controls": {
                                    "description": "The ID of the control defined in the compliance.",
                                    "items": {
                                      "additionalProperties": {
                                        "type": "string"
                                      },
                                      "type": "object"
                                    },
                                    "title": "Controls",
                                    "type": "array"
                                  },
                                  "description": {
                                    "description": "Description of the rule.",
                                    "title": "Description",
                                    "type": "string"
                                  },
                                  "effort": {
                                    "allOf": [
                                      {
                                        "enum": [
                                          "High",
                                          "Medium",
                                          "Low",
                                          ""
                                        ],
                                        "title": "Effort",
                                        "type": "string"
                                      }
                                    ],
                                    "description": "The effort required to fix the finding."
                                  },
                                  "ruleName": {
                                    "description": "The unique name of the rule.",
                                    "title": "Rulename",
                                    "type": "string"
                                  },
                                  "ruleTitle": {
                                    "description": "The name of the rule.",
                                    "title": "Ruletitle",
                                    "type": "string"
                                  },
                                  "service": {
                                    "description": "The cloud service.",
                                    "title": "Service",
                                    "type": "string"
                                  },
                                  "severity": {
                                    "allOf": [
                                      {
                                        "enum": [
                                          "Critical",
                                          "High",
                                          "Medium",
                                          "Low"
                                        ],
                                        "title": "Severity",
                                        "type": "string"
                                      }
                                    ],
                                    "description": "The severity of the rule."
                                  }
                                },
                                "required": [
                                  "ruleName",
                                  "ruleTitle",
                                  "description",
                                  "cloud",
                                  "service",
                                  "args",
                                  "severity",
                                  "effort",
                                  "complianceName",
                                  "controls"
                                ],
                                "title": "RulesModel",
                                "type": "object"
                              },
                              "title": "Items",
                              "type": "array"
                            },
                            "paginationInfo": {
                              "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/response/allOf/0/properties/paginationInfo"
                            },
                            "status": {
                              "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/response/allOf/0/properties/status"
                            }
                          },
                          "required": [
                            "status",
                            "items",
                            "paginationInfo"
                          ],
                          "title": "PaginatedResponse[RulesModel]",
                          "type": "object"
                        }
                      ]
                    },
                    "responseTime": {
                      "title": "Responsetime",
                      "type": "number"
                    }
                  },
                  "required": [
                    "request"
                  ],
                  "title": "SpotResponse[PaginatedResponse[RulesModel]]",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1security~1v1~1compliances/get/responses/422/content/application~1json/schema"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Rules",
        "tags": [
          "Misconfiguration"
        ]
      },
      "parameters": []
    },
    "/security/v1/misconfigurations/rules/count": {
      "get": {
        "description": "Rules are configuration checks that detect misconfigurations in your cloud environment.\nRules are cloud service provider specific. A rule is mapped to one or more controls.\nThis API returns the list of rules that can determine the state of a specific control.",
        "operationId": "get_rules_count_v1_misconfigurations_rules_count_get",
        "parameters": [
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations~1rules/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations~1rules/get/parameters/2"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/8"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1security~1v1~1compliances~1count/get/responses/200/content/application~1json/schema"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1security~1v1~1compliances/get/responses/422/content/application~1json/schema"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Rules Count",
        "tags": [
          "Misconfiguration"
        ]
      },
      "parameters": []
    },
    "/security/v1/assets/filters/{filterKey}": {
      "get": {
        "description": "Get a list of values in your organization for a specific filter type.\nFor example, if you select accountId, you'll get a list of all the account IDs in your organization.",
        "operationId": "get_asset_sim_filter_v1_assets_filters__filterKey__get",
        "parameters": [
          {
            "description": "The name of the filter.",
            "in": "path",
            "name": "filterKey",
            "required": true,
            "schema": {
              "allOf": [
                {
                  "description": "The list of filter types, for example accountId, region, assetName.",
                  "enum": [
                    "accountId",
                    "accountName",
                    "region",
                    "assetId",
                    "assetName",
                    "service",
                    "assetType"
                  ],
                  "title": "AssetFilters",
                  "type": "string"
                }
              ],
              "description": "The name of the filter.",
              "title": "Filterkey"
            }
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/1"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/2"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/3"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/4"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/5"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/6"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/7"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/8"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/9"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/10"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/11"
          },
          {
            "$ref": "#/paths/~1security~1v1~1misconfigurations/get/parameters/13"
          },
          {
            "description": "The name of the asset ID.",
            "in": "query",
            "name": "assetName",
            "required": false,
            "schema": {
              "description": "The name of the asset ID.",
              "title": "Assetname",
              "type": "string"
            }
          },
          {
            "description": "If there are findings for the assets, the value is True.",
            "example": "true",
            "in": "query",
            "name": "isRisky",
            "required": false,
            "schema": {
              "description": "If there are findings for the assets, the value is True.",
              "title": "Isrisky",
              "type": "boolean"
            }
          },
          {
            "description": "The sum of misconfigurations and vulnerabilities for today's date, and threats and anomalies identified that are still applicable today.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "allFindingsCount",
            "required": false,
            "schema": {
              "description": "The sum of misconfigurations and vulnerabilities for today's date, and threats and anomalies identified that are still applicable today.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Allfindingscount",
              "type": "string"
            }
          },
          {
            "description": "The total number of vulnerabilities found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "allVulnCount",
            "required": false,
            "schema": {
              "description": "The total number of vulnerabilities found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Allvulncount",
              "type": "string"
            }
          },
          {
            "description": "The number of critical vulnerabilities found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "criticalVulnCount",
            "required": false,
            "schema": {
              "description": "The number of critical vulnerabilities found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Criticalvulncount",
              "type": "string"
            }
          },
          {
            "description": "The number of high vulnerabilities found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "highVulnCount",
            "required": false,
            "schema": {
              "description": "The number of high vulnerabilities found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Highvulncount",
              "type": "string"
            }
          },
          {
            "description": "The number of medium vulnerabilities found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "mediumVulnCount",
            "required": false,
            "schema": {
              "description": "The number of medium vulnerabilities found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Mediumvulncount",
              "type": "string"
            }
          },
          {
            "description": "The number of low vulnerabilities found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "lowVulnCount",
            "required": false,
            "schema": {
              "description": "The number of low vulnerabilities found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Lowvulncount",
              "type": "string"
            }
          },
          {
            "description": "The number of informational vulnerabilities found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "infoVulnCount",
            "required": false,
            "schema": {
              "description": "The number of informational vulnerabilities found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Infovulncount",
              "type": "string"
            }
          },
          {
            "description": "The total number of misconfigurations found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "allMisconfigCount",
            "required": false,
            "schema": {
              "description": "The total number of misconfigurations found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Allmisconfigcount",
              "type": "string"
            }
          },
          {
            "description": "The number of high misconfigurations found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "highMisconfigCount",
            "required": false,
            "schema": {
              "description": "The number of high misconfigurations found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Highmisconfigcount",
              "type": "string"
            }
          },
          {
            "description": "The number of medium misconfigurations found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "mediumMisconfigCount",
            "required": false,
            "schema": {
              "description": "The number of medium misconfigurations found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Mediummisconfigcount",
              "type": "string"
            }
          },
          {
            "description": "The number of low misconfigurations found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "lowMisconfigCount",
            "required": false,
            "schema": {
              "description": "The number of low misconfigurations found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Lowmisconfigcount",
              "type": "string"
            }
          },
          {
            "description": "The total number of events found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "allEventsCount",
            "required": false,
            "schema": {
              "description": "The total number of events found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Alleventscount",
              "type": "string"
            }
          },
          {
            "description": "The number of configuration events found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "configEventsCount",
            "required": false,
            "schema": {
              "description": "The number of configuration events found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Configeventscount",
              "type": "string"
            }
          },
          {
            "description": "The number of critical events found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "criticalEventsCount",
            "required": false,
            "schema": {
              "description": "The number of critical events found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Criticaleventscount",
              "type": "string"
            }
          },
          {
            "description": "The number of data change events found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "dataChangeEventsCount",
            "required": false,
            "schema": {
              "description": "The number of data change events found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Datachangeeventscount",
              "type": "string"
            }
          },
          {
            "description": "The number of IAM change events found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "iamChangeEventsCount",
            "required": false,
            "schema": {
              "description": "The number of IAM change events found for the asset.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Iamchangeeventscount",
              "type": "string"
            }
          },
          {
            "description": "The number of related assets affected by the finding.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "affectedAssetsCount",
            "required": false,
            "schema": {
              "description": "The number of related assets affected by the finding.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Affectedassetscount",
              "type": "string"
            }
          },
          {
            "description": "The total number of anomalies found for the asset identified that are still applicable today.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "allAnomaliesCount",
            "required": false,
            "schema": {
              "description": "The total number of anomalies found for the asset identified that are still applicable today.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Allanomaliescount",
              "type": "string"
            }
          },
          {
            "description": "The total number of threats found for the asset identified that are still applicable today.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
            "in": "query",
            "name": "allThreatsCount",
            "required": false,
            "schema": {
              "description": "The total number of threats found for the asset identified that are still applicable today.\n        <br>\n        Enter either a number or prefix it with one of these operators:\n        <table>\n        <tr>\n        <th>Operator</th>\n        <th>Notation</th>\n        <th>Example</th>\n        </tr>\n        <tr>\n        <td>Equals</td>\n        <td>No prefix or \\~eq\\~</td>\n        <td>10 or \\~eq\\~10</td>\n        </tr>\n        <tr>\n        <td>Not equals</td>\n        <td>\\~neq\\~</td>\n        <td>\\~neq\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than</td>\n        <td>\\~gt\\~</td>\n        <td>\\~gt\\~10</td>\n        </tr>\n        <tr>\n        <td>Greater than equals</td>\n        <td>\\~gte\\~</td>\n        <td>\\~gte\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than</td>\n        <td>\\~lt\\~</td>\n        <td>\\~lt\\~10</td>\n        </tr>\n        <tr>\n        <td>Less than equals</td>\n        <td>\\~lte\\~</td>\n        <td>\\~lte\\~10</td>\n        </tr>\n        <tr>\n        <td>Between two numbers</td>\n        <td>\\~bt\\~</td>\n        <td>\\~bt\\~10,20</td>\n        </tr>\n        </table>\n        ",
              "title": "Allthreatscount",
              "type": "string"
            }
          },
          {
            "description": "The field to sort the results by.",
            "in": "query",
            "name": "ordering",
            "required": false,
            "schema": {
              "allOf": [
                {
                  "description": "The order you want to sort the assets.",
                  "enum": [
                    "item",
                    "-item",
                    "accId",
                    "-accId",
                    "service",
                    "-service",
                    "assetType",
                    "-assetType",
                    "isRisky",
                    "-isRisky",
                    "colDate",
                    "-colDate",
                    "region",
                    "-region",
                    "allFindingsCount",
                    "-allFindingsCount",
                    "allVulnCount",
                    "-allVulnCount",
                    "criticalVulnCount",
                    "-criticalVulnCount",
                    "highVulnCount",
                    "-highVulnCount",
                    "mediumVulnCount",
                    "-mediumVulnCount",
                    "lowVulnCount",
                    "-lowVulnCount",
                    "infoVulnCount",
                    "-infoVulnCount",
                    "allMisconfigCount",
                    "-allMisconfigCount",
                    "highMisconfigCount",
                    "-highMisconfigCount",
                    "mediumMisconfigCount",
                    "-mediumMisconfigCount",
                    "lowMisconfigCount",
                    "-lowMisconfigCount",
                    "allEventsCount",
                    "-allEventsCount",
                    "configEventsCount",
                    "-configEventsCount",
                    "criticalEventsCount",
                    "-criticalEventsCount",
                    "dataChangeEventsCount",
                    "-dataChangeEventsCount",
                    "iamChangeEventsCount",
                    "-iamChangeEventsCount",
                    "affectedAssetsCount",
                    "-affectedAssetsCount",
                    "allAnomaliesCount",
                    "-allAnomaliesCount",
                    "allThreatsCount"
                  ],
                  "title": "Ordering",
                  "type": "string"
                }
              ],
              "default": "-allMisconfigCount",
              "description": "The field to sort the results by.",
              "title": "Ordering"
            }
          },
          {
            "$ref": "#/paths/~1security~1v1~1compliances/get/parameters/0"
          },
          {
            "$ref": "#/paths/~1security~1v1~1compliances/get/parameters/1"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "error": {
                      "allOf": [
                        {
                          "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/error/allOf/0"
                        }
                      ],
                      "title": "Error"
                    },
                    "request": {
                      "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/request"
                    },
                    "response": {
                      "allOf": [
                        {
                          "properties": {
                            "count": {
                              "default": 0,
                              "description": "The number of items.",
                              "title": "Count",
                              "type": "integer"
                            },
                            "items": {
                              "description": "The array of objects in this response. The length of the array is according to the 'count' attribute.",
                              "items": {
                                "properties": {
                                  "value": {
                                    "description": "The list of values in your organization for the filter type you selected.",
                                    "title": "Value",
                                    "type": "string"
                                  }
                                },
                                "title": "AssetSimFilterResponseModel",
                                "type": "object"
                              },
                              "title": "Items",
                              "type": "array"
                            },
                            "paginationInfo": {
                              "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/response/allOf/0/properties/paginationInfo"
                            },
                            "status": {
                              "$ref": "#/paths/~1security~1v1~1compliances/get/responses/200/content/application~1json/schema/properties/response/allOf/0/properties/status"
                            }
                          },
                          "required": [
                            "status",
                            "items",
                            "paginationInfo"
                          ],
                          "title": "PaginatedResponse[AssetSimFilterResponseModel]",
                          "type": "object"
                        }
                      ]
                    },
                    "responseTime": {
                      "title": "Responsetime",
                      "type": "number"
                    }
                  },
                  "required": [
                    "request"
                  ],
                  "title": "SpotResponse[PaginatedResponse[AssetSimFilterResponseModel]]",
                  "type": "object"
                }
              }
            },
            "description": "Successful Response"
          },
          "400": {
            "content": {},
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1security~1v1~1compliances/get/responses/422/content/application~1json/schema"
                }
              }
            },
            "description": "Validation Error"
          }
        },
        "summary": "Get Asset Sim Filter",
        "tags": [
          "Assets"
        ]
      },
      "parameters": []
    },
    "/cbi/v1/access/policy": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "summary": "Get FinOps Authorization Policies",
        "description": "Get all available FinOps authorization policies.",
        "parameters": [
          {
            "name": "targetOrganizationId",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "paginationSize",
            "in": "query",
            "description": "number of items to include in the response",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "paginationKey",
            "in": "query",
            "description": "key used to fetch the next page of items",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "allOf": [
                        {
                          "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                        },
                        {
                          "type": "object",
                          "properties": {
                            "response": {
                              "type": "object",
                              "properties": {
                                "count": {
                                  "type": "integer",
                                  "example": 1,
                                  "description": "Size of the data object array.\n"
                                },
                                "kind": {
                                  "type": "string",
                                  "description": "The data type of each item in the response.\n"
                                },
                                "paginationInfo": {
                                  "nullable": true,
                                  "properties": {
                                    "totalCount": {
                                      "type": "integer",
                                      "nullable": true,
                                      "description": "[Optional/Not supported on all APIs] Total number of items (for all pages)."
                                    },
                                    "nextKey": {
                                      "type": "string",
                                      "nullable": true,
                                      "description": "Key used to fetch next page of data (if any)."
                                    },
                                    "previousKey": {
                                      "type": "string",
                                      "nullable": true,
                                      "description": "Key used to fetch previous page of data (if any)."
                                    }
                                  },
                                  "type": "object",
                                  "title": "PaginationInfo"
                                }
                              }
                            }
                          }
                        }
                      ]
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/cbi/v1/access/policy"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "policyId": {
                                    "type": "string",
                                    "description": "Policy's unique ID.",
                                    "nullable": true,
                                    "example": "BE-ViewAllOnly"
                                  },
                                  "policyName": {
                                    "type": "string",
                                    "description": "Policy's name.",
                                    "nullable": true,
                                    "example": "Billing Engine View All Only"
                                  },
                                  "policyDescription": {
                                    "type": "string",
                                    "description": "Policy's description.",
                                    "nullable": true,
                                    "example": "Grants authorization to view all features in Billing Engine. This policy requires and will automatically grant access to all accounts within Billing Engine."
                                  },
                                  "requiresAccessToAllAccounts": {
                                    "type": "boolean",
                                    "description": "True if the policy requires the caller to have access to all accounts.",
                                    "example": true
                                  }
                                },
                                "additionalProperties": false,
                                "description": "The authorization policy response model. [kind/spotinst:cbi:authorization:policy]"
                              }
                            },
                            "kind": {
                              "example": "spotinst:cbi:authorization:policy"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request error response. Adjust the request before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "allOf": [
                    {
                      "$ref": "#/paths/~1azure~1compute~1vm~1signal/post/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "errors": {
                              "type": "array",
                              "description": "List of errors.",
                              "items": {
                                "properties": {
                                  "code": {
                                    "type": "string",
                                    "description": "Error code."
                                  },
                                  "message": {
                                    "type": "string",
                                    "description": "Error message."
                                  }
                                },
                                "type": "object",
                                "required": [
                                  "message"
                                ],
                                "title": "ErrorModel"
                              }
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "403": {
            "description": "Forbidden error response. Not permitted to call this API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          },
          "500": {
            "description": "Internal error response. Please try again later.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          }
        }
      }
    },
    "/cbi/v1/access/user/{userId}": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "summary": "Get FinOps Authorization For User",
        "description": "Get the user-level FinOps authorization configuration for the specified user.",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "description": "The userId to retrieve.",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "includeChildOrgs",
            "in": "query",
            "description": "Include the configurations for child organizations.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/cbi/v1/access/user/{userId}"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "organizationId": {
                                    "type": "string",
                                    "description": "User's Spot organization ID.",
                                    "nullable": true,
                                    "example": "11111111111111"
                                  },
                                  "userId": {
                                    "type": "string",
                                    "description": "User's unique ID.",
                                    "nullable": true,
                                    "example": "u-12345678"
                                  },
                                  "costTypes": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string",
                                          "description": "Cost type's unique ID.",
                                          "nullable": true,
                                          "example": "Effective"
                                        },
                                        "name": {
                                          "type": "string",
                                          "description": "Cost type's name.",
                                          "nullable": true,
                                          "example": "Effective Cost"
                                        }
                                      },
                                      "additionalProperties": false,
                                      "description": "A FinOps cost type."
                                    },
                                    "description": "Cost types assigned to this user.",
                                    "nullable": true
                                  },
                                  "accounts": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string",
                                          "description": "Provider account ID. This is the unique ID from the service provider, such as AWS, Azure.",
                                          "nullable": true,
                                          "example": "aws~11111111111111"
                                        },
                                        "name": {
                                          "type": "string",
                                          "description": "Provider account's Name.",
                                          "nullable": true,
                                          "example": "Test"
                                        }
                                      },
                                      "additionalProperties": false,
                                      "description": "A cloud provider account ID."
                                    },
                                    "description": "Provider account IDs assigned to this user.",
                                    "nullable": true,
                                    "example": [
                                      {
                                        "id": "aws~11111111111111",
                                        "name": "Test"
                                      }
                                    ]
                                  },
                                  "policies": {
                                    "type": "array",
                                    "items": {
                                      "type": "object",
                                      "properties": {
                                        "id": {
                                          "type": "string",
                                          "description": "Policy's unique ID.",
                                          "nullable": true,
                                          "example": "BE-ViewAllOnly"
                                        },
                                        "name": {
                                          "type": "string",
                                          "description": "Policy's name.",
                                          "nullable": true,
                                          "example": "Billing Engine View All Only"
                                        }
                                      },
                                      "additionalProperties": false,
                                      "description": "A FinOps authorization policy."
                                    },
                                    "description": "Authorization policies assigned to this user.",
                                    "nullable": true,
                                    "example": [
                                      {
                                        "id": "BE-ViewAllOnly",
                                        "name": "Billing Engine View All Only"
                                      }
                                    ]
                                  }
                                },
                                "additionalProperties": false,
                                "description": "The user's FinOps authorization configuration response model. [kind/spotinst:cbi:authorization:user]"
                              }
                            },
                            "kind": {
                              "example": "spotinst:cbi:authorization:user"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request error response. Adjust the request before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden error response. Not permitted to call this API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          },
          "404": {
            "description": "Not found error response. The requested resource does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          },
          "500": {
            "description": "Internal error response. Please try again later.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Organizations"
        ],
        "summary": "Update FinOps Authorization For User",
        "description": "Update the FinOps authorization configuration for a user.",
        "parameters": [
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json-patch+json": {
              "schema": {
                "$ref": "#/paths/~1cbi~1v1~1access~1user~1%7BuserId%7D/post/requestBody/content/text~1json/schema"
              }
            },
            "application/json": {
              "schema": {
                "$ref": "#/paths/~1cbi~1v1~1access~1user~1%7BuserId%7D/post/requestBody/content/text~1json/schema"
              }
            },
            "text/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "authChanges": {
                    "type": "object",
                    "properties": {
                      "resetCostTypes": {
                        "type": "boolean",
                        "description": "If true, the existing list of cost types is emptied prior to performing the changes requested."
                      },
                      "costTypeChanges": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "enum": [
                                "None",
                                "Provider",
                                "List",
                                "Billed",
                                "Effective"
                              ],
                              "type": "string"
                            },
                            "action": {
                              "$ref": "#/paths/~1cbi~1v1~1access~1user~1%7BuserId%7D/post/requestBody/content/text~1json/schema/properties/authChanges/properties/policyChanges/items/properties/action"
                            }
                          },
                          "additionalProperties": false,
                          "description": "The information for a cost type list modification."
                        },
                        "description": "List of cost types to add/remove.\r\nCost type applies to all accounts assigned to the user (regardless of how the user has access to the account).\r\nIf the user already has an existing list of cost types, the requested actions are applied to this existing\r\nlist unless resetCostTypes is true (which will clear all existing cost types first).",
                        "nullable": true
                      },
                      "organizationId": {
                        "type": "string",
                        "description": "ID of the target Spot organization where the authorization configuration should be applied.\r\nOptional: Defaults to the caller's current Spot organization.\r\nIf specified, the ID must be one of these:\r\n- The caller's current Spot organization\r\n- A child Spot organization of the caller's current Spot organization",
                        "nullable": true
                      },
                      "resetAccounts": {
                        "type": "boolean",
                        "description": "If true, the existing list of accounts is emptied prior to performing the \r\nchanges requested."
                      },
                      "accountChanges": {
                        "type": "array",
                        "items": {
                          "$ref": "#/paths/~1cbi~1v1~1access~1user~1%7BuserId%7D/post/requestBody/content/text~1json/schema/properties/authChanges/properties/policyChanges/items"
                        },
                        "description": "List of accounts to add/remove.\r\nIf user or group already has an existing list of accounts, the requested actions will be applied to this existing \r\nlist unless resetAccounts is true (which will clear all existing accounts first).",
                        "nullable": true
                      },
                      "resetPolicies": {
                        "type": "boolean",
                        "description": "If true, the existing list of policies is emptied prior to performing the changes requested."
                      },
                      "policyChanges": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "properties": {
                            "id": {
                              "type": "string",
                              "description": "The entity's ID.",
                              "nullable": true
                            },
                            "action": {
                              "enum": [
                                "Add",
                                "Remove"
                              ],
                              "type": "string",
                              "description": "An action for managing items in a list."
                            }
                          },
                          "additionalProperties": false,
                          "description": "Represents the basic information for a list modification."
                        },
                        "description": "List of policies to add/remove.\r\nIf user or group already has an existing list of policies, the requested actions will be applied to this existing \r\nlist unless resetPolicies is true (which will clear all existing policies first).",
                        "nullable": true
                      }
                    },
                    "additionalProperties": false,
                    "description": "The FinOps authorization changes for a user."
                  }
                },
                "additionalProperties": false,
                "description": "Request to update the FinOps authorization configuration for a specific user."
              }
            },
            "application/*+json": {
              "schema": {
                "$ref": "#/paths/~1cbi~1v1~1access~1user~1%7BuserId%7D/post/requestBody/content/text~1json/schema"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/cbi/v1/access/user/{userId}"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "userId": {
                                    "type": "string",
                                    "description": "User's unique ID.",
                                    "nullable": true,
                                    "example": "u-12345678"
                                  },
                                  "beforeChanges": {
                                    "$ref": "#/paths/~1cbi~1v1~1access~1user~1%7BuserId%7D/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                                  },
                                  "afterChanges": {
                                    "$ref": "#/paths/~1cbi~1v1~1access~1user~1%7BuserId%7D/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                                  }
                                },
                                "additionalProperties": false,
                                "description": "The FinOps authorization configuration for a specific user (before and after changes). [kind/spotinst:cbi:authorization:user]"
                              }
                            },
                            "kind": {
                              "example": "spotinst:cbi:authorization:user"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Invalid request error response. Adjust the request before retrying.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          },
          "403": {
            "description": "Forbidden error response. Not permitted to call this API.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          },
          "404": {
            "description": "Not found error response. The requested resource does not exist.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          },
          "500": {
            "description": "Internal error response. Please try again later.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          }
        }
      }
    },
    "/cbi/v1/setup/account": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Setup Cost Intelligence",
        "description": "Sets up and enables Cost Intelligence functionality on a Spot account. The Spot account must already have credentials and be linked to a valid cloud provider account (e.g. AWS account, Azure subscription, etc).",
        "operationId": "setupAccountCbiV1SetupAccountPost",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "account": {
                    "properties": {
                      "accountId": {
                        "type": "string",
                        "description": "Spot account ID"
                      }
                    },
                    "type": "object",
                    "required": [
                      "accountId"
                    ],
                    "title": "Account"
                  }
                },
                "type": "object",
                "required": [
                  "account"
                ],
                "title": "CreateCIRegisteredAccountModel"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/cbi/v1/setup/account"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "properties": {
                                  "organizationId": {
                                    "type": "string",
                                    "description": "Spot Organization ID.",
                                    "example": "60100100100100"
                                  },
                                  "accountId": {
                                    "type": "string",
                                    "description": "Spot Account ID.",
                                    "example": "act-012345"
                                  },
                                  "providerName": {
                                    "$ref": "#/paths/~1cbi~1v1~1setup~1account/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/properties/providerName",
                                    "description": "Cloud provider of setup account.",
                                    "example": "aws"
                                  },
                                  "externalProviderId": {
                                    "type": "string",
                                    "description": "Cloud provider of setup account.",
                                    "example": "012345678901"
                                  },
                                  "enabledDate": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "Date/time when Cost Intelligence was registered on the Spot account."
                                  },
                                  "updatedDate": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "Date/time when the Cost Intelligence registration was updated on the Spot account."
                                  }
                                },
                                "type": "object",
                                "required": [
                                  "organizationId",
                                  "accountId",
                                  "providerName",
                                  "externalProviderId",
                                  "enabledDate",
                                  "updatedDate"
                                ],
                                "title": "CIRegisteredAccountResponse",
                                "description": "Represents a Spot account on which Cost Intelligence has been registered / enabled. [kind/spotinst:cbi:inventory:ciRegisteredAccount]"
                              }
                            },
                            "kind": {
                              "example": "spotinst:cbi:inventory:ciRegisteredAccount"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            },
            "description": "Invalid request error response. Adjust the request before retrying."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            },
            "description": "Not found error response. The requested resource does not exist."
          },
          "422": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          }
        }
      },
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get Cost Intelligence Registered Accounts",
        "description": "Get list of Spot accounts where Cost Intelligence has been setup.",
        "operationId": "getAccountsCbiV1SetupAccountGet",
        "parameters": [
          {
            "name": "paginationSize",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "Number of items to include in the response"
            },
            "description": "Number of items to include in the response"
          },
          {
            "name": "paginationKey",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Key used to fetch a specific page of items"
            },
            "description": "Key used to fetch a specific page of items"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/cbi/v1/setup/account"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "properties": {
                                  "organizationId": {
                                    "type": "string",
                                    "description": "Spot Organization ID.",
                                    "example": "60100100100100"
                                  },
                                  "accountId": {
                                    "type": "string",
                                    "description": "Spot Account ID.",
                                    "example": "act-012345"
                                  },
                                  "providerName": {
                                    "description": "Cloud provider of setup account.",
                                    "example": "aws",
                                    "type": "string",
                                    "enum": [
                                      "aws",
                                      "azure",
                                      "gcp"
                                    ],
                                    "title": "CloudProvider"
                                  },
                                  "externalProviderId": {
                                    "type": "string",
                                    "description": "Cloud provider of setup account.",
                                    "example": "012345678901"
                                  },
                                  "enabledDate": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "Date/time when Cost Intelligence was registered on the Spot account."
                                  },
                                  "updatedDate": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "Date/time when the Cost Intelligence registration was updated on the Spot account."
                                  },
                                  "statusSummary": {
                                    "description": "Account status summary.",
                                    "type": "string",
                                    "enum": [
                                      "connected",
                                      "notConnected",
                                      "partiallyConnected"
                                    ],
                                    "title": "AccountStatusSummary"
                                  },
                                  "status": {
                                    "description": "Account status",
                                    "type": "array",
                                    "items": {
                                      "properties": {
                                        "productOffering": {
                                          "description": "Product offering.",
                                          "type": "string",
                                          "enum": [
                                            "common",
                                            "cloudBilling",
                                            "cbi"
                                          ],
                                          "title": "ProductOfferingEnum"
                                        },
                                        "statusType": {
                                          "type": "string",
                                          "description": "Status type."
                                        },
                                        "statusCode": {
                                          "type": "string",
                                          "description": "Status code."
                                        },
                                        "statusMessage": {
                                          "description": "Status message.",
                                          "type": "string",
                                          "nullable": true
                                        },
                                        "statistics": {
                                          "description": "Status statistics.",
                                          "nullable": true,
                                          "properties": {
                                            "totalResourceTypeCount": {
                                              "type": "integer",
                                              "description": "Total number of resource types."
                                            },
                                            "failedResourceTypeCount": {
                                              "type": "integer",
                                              "description": "Failed number of resource types."
                                            },
                                            "successfulResourceTypes": {
                                              "description": "Successful resource types.",
                                              "type": "array",
                                              "items": {
                                                "type": "string"
                                              },
                                              "nullable": true
                                            },
                                            "failedResourceTypes": {
                                              "description": "Failed resource types.",
                                              "type": "array",
                                              "items": {
                                                "type": "string"
                                              },
                                              "nullable": true
                                            }
                                          },
                                          "type": "object",
                                          "required": [
                                            "totalResourceTypeCount",
                                            "failedResourceTypeCount"
                                          ],
                                          "title": "AccountStatusStatistic"
                                        },
                                        "statusTimestamp": {
                                          "type": "string",
                                          "format": "date-time",
                                          "description": "Status timestamp."
                                        }
                                      },
                                      "type": "object",
                                      "required": [
                                        "productOffering",
                                        "statusType",
                                        "statusCode",
                                        "statusTimestamp"
                                      ],
                                      "title": "AccountStatusItem"
                                    },
                                    "nullable": true
                                  }
                                },
                                "type": "object",
                                "required": [
                                  "organizationId",
                                  "accountId",
                                  "providerName",
                                  "externalProviderId",
                                  "enabledDate",
                                  "updatedDate",
                                  "statusSummary"
                                ],
                                "title": "CIRegisteredAccountWithStatusResponse"
                              }
                            },
                            "kind": {
                              "example": "string"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            },
            "description": "Invalid request error response. Adjust the request before retrying."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            },
            "description": "Not found error response. The requested resource does not exist."
          },
          "422": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          }
        }
      }
    },
    "/cbi/v1/setup/account/validation": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Perform Cost Intelligence Setup Validations",
        "description": "Validate that Cost Intelligence can be setup on the specified Spot Account.",
        "operationId": "validateSetupAccountCbiV1SetupAccountValidationPost",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/paths/~1cbi~1v1~1setup~1account/post/requestBody/content/application~1json/schema"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/cbi/v1/setup/account/validation"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "properties": {
                                  "id": {
                                    "type": "string",
                                    "description": "Unique ID of the validation step that was performed."
                                  },
                                  "description": {
                                    "description": "Summary of the validation step (i.e. what validation check was performed).",
                                    "type": "string",
                                    "nullable": true
                                  },
                                  "status": {
                                    "description": "Overall status of the validation step.",
                                    "type": "string",
                                    "enum": [
                                      "success",
                                      "failed",
                                      "warning",
                                      "skipped"
                                    ],
                                    "title": "ValidationStatus"
                                  },
                                  "validationInfo": {
                                    "description": "Additional information about the reason the validation step failed.",
                                    "type": "string",
                                    "nullable": true
                                  },
                                  "validationInfoDetails": {
                                    "description": "Validation info details",
                                    "type": "object",
                                    "nullable": true
                                  }
                                },
                                "type": "object",
                                "required": [
                                  "id",
                                  "status"
                                ],
                                "title": "ValidationModelResponse",
                                "description": "[kind/spotinst:cbi:accountRegistrationValidation]"
                              }
                            },
                            "kind": {
                              "example": "spotinst:cbi:accountRegistrationValidation"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            },
            "description": "Invalid request error response. Adjust the request before retrying."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            },
            "description": "Not found error response. The requested resource does not exist."
          },
          "422": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          }
        }
      }
    },
    "/cloudBilling/v1/setup/account": {
      "get": {
        "tags": [
          "Accounts"
        ],
        "summary": "Get Billing Engine Registered Accounts",
        "description": "Get list of Spot accounts where Billing Engine has been setup.",
        "operationId": "listAccountsCloudBillingV1SetupAccountGet",
        "parameters": [
          {
            "name": "paginationSize",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "description": "Number of items to include in the response"
            },
            "description": "Number of items to include in the response"
          },
          {
            "name": "paginationKey",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "description": "Key used to fetch a specific page of items"
            },
            "description": "Key used to fetch a specific page of items"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/cloudBilling/v1/setup/account"
                            },
                            "method": {
                              "example": "GET"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "properties": {
                                  "accountId": {
                                    "type": "string",
                                    "description": "Spot Account ID.",
                                    "example": "act-23432"
                                  },
                                  "organizationId": {
                                    "description": "Spot Organization ID.",
                                    "example": "634563908342",
                                    "type": "string",
                                    "nullable": true
                                  },
                                  "cloudProvider": {
                                    "type": "string",
                                    "description": "Cloud provider.",
                                    "example": "aws"
                                  },
                                  "externalProviderId": {
                                    "type": "string",
                                    "description": "Cloud provider account ID.",
                                    "example": "435345634"
                                  },
                                  "externalProviderName": {
                                    "description": "Cloud provider account name.",
                                    "example": "Provider account name 1",
                                    "type": "string",
                                    "nullable": true
                                  },
                                  "enabledDate": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "Timestamp when the Spot account was onboarded to Billing Engine.",
                                    "example": "2019-08-24T14:15:22Z"
                                  },
                                  "updatedDate": {
                                    "type": "string",
                                    "format": "date-time",
                                    "description": "Timestamp when Billing Engine config was last modified.",
                                    "example": "2019-08-24T14:15:22Z"
                                  },
                                  "statusSummary": {
                                    "$ref": "#/paths/~1cbi~1v1~1setup~1account/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/properties/statusSummary",
                                    "description": "Billing Engine account connection status."
                                  },
                                  "status": {
                                    "description": "Billing Engine account status info.",
                                    "type": "array",
                                    "items": {
                                      "$ref": "#/paths/~1cbi~1v1~1setup~1account/get/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items/properties/status/items"
                                    },
                                    "nullable": true
                                  }
                                },
                                "type": "object",
                                "required": [
                                  "accountId",
                                  "organizationId",
                                  "cloudProvider",
                                  "externalProviderId",
                                  "externalProviderName",
                                  "enabledDate",
                                  "updatedDate",
                                  "statusSummary"
                                ],
                                "title": "SetupBERegisteredAccountWithStatusResponse",
                                "description": "Represents a Spot account on which Billing Engine has been registered / enabled. [kind/spotinst:cloudBilling:beRegisteredAccount]"
                              }
                            },
                            "kind": {
                              "example": "spotinst:cloudBilling:beRegisteredAccount"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            },
            "description": "Invalid request error response. Adjust the request before retrying."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            },
            "description": "Not found error response. The requested resource does not exist."
          },
          "422": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Setup Billing Engine",
        "description": "Sets up and enables Billing Engine functionality on a Spot account. The Spot account must already have credentials and be linked to a valid cloud provider account (e.g. AWS account, Azure billing account, etc).",
        "operationId": "setupAccountCloudBillingV1SetupAccountPost",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "accountId": {
                    "type": "string",
                    "description": "Spot Account ID.",
                    "example": "act-23432"
                  },
                  "config": {
                    "anyOf": [
                      {
                        "type": "object"
                      },
                      {
                        "properties": {
                          "billingSource": {
                            "description": "Configuration settings used to collect AWS billing data.",
                            "properties": {
                              "bucket": {
                                "type": "string",
                                "description": "The name of the AWS S3 bucket where the AWS CUR is stored."
                              },
                              "region": {
                                "type": "string",
                                "description": "The AWS buckets AWS region (e.g. us-east-1)."
                              },
                              "pathPrefix": {
                                "type": "string",
                                "description": "The prefix path and report name generated for the AWS CUR you configured."
                              }
                            },
                            "type": "object",
                            "required": [
                              "bucket",
                              "region",
                              "pathPrefix"
                            ],
                            "title": "BERegisteredSetupAccountAwsConfigBillingSource"
                          }
                        },
                        "type": "object",
                        "required": [
                          "billingSource"
                        ],
                        "title": "BERegisteredSetupAccountAwsConfig",
                        "description": "Configuration settings used to collect AWS billing data. The target Spot account must be linked to an AWS account with billing data (e.g. master payer account)."
                      },
                      {
                        "properties": {},
                        "type": "object",
                        "title": "BERegisteredSetupAccountAzureConfig",
                        "description": "Configuration settings used to collect Azure billing data. The target Spot account must be linked to an Azure billing account."
                      },
                      {
                        "properties": {
                          "googleBillingConfiguration": {
                            "description": "Configuration settings used to collect Google billing data.",
                            "properties": {
                              "tableId": {
                                "type": "string",
                                "description": "The BigQuery table ID that is used to export the billing data."
                              },
                              "datasetId": {
                                "type": "string",
                                "description": "The BigQuery dataset ID that is used to export the billing data."
                              },
                              "projectId": {
                                "type": "string",
                                "description": "The Google project ID that is used to export the billing data."
                              }
                            },
                            "type": "object",
                            "required": [
                              "tableId",
                              "datasetId",
                              "projectId"
                            ],
                            "title": "BERegisteredSetupAccountGcpBillingConfig"
                          }
                        },
                        "type": "object",
                        "required": [
                          "googleBillingConfiguration"
                        ],
                        "title": "BERegisteredSetupAccountGcpConfig",
                        "description": "Configuration settings used to collect Google billing data. The target Spot account must be linked to a Google project where the billing data is exported."
                      }
                    ],
                    "description": "Configuration for the Billing Engine (e.g. location of the billing data)",
                    "nullable": true
                  }
                },
                "type": "object",
                "required": [
                  "accountId"
                ],
                "title": "BERegisteredSetupAccountUpdateRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/cloudBilling/v1/setup/account"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "properties": {
                                  "accountId": {
                                    "type": "string",
                                    "description": "Spot Account ID.",
                                    "example": "act-23432"
                                  },
                                  "organizationId": {
                                    "description": "Spot Organization ID",
                                    "example": "634563908342",
                                    "type": "string",
                                    "nullable": true
                                  },
                                  "cloudProvider": {
                                    "type": "string",
                                    "description": "Cloud provider",
                                    "example": "aws"
                                  },
                                  "externalProviderId": {
                                    "type": "string",
                                    "description": "Cloud provider account ID",
                                    "example": "435345634"
                                  },
                                  "isBillingAccount": {
                                    "type": "boolean",
                                    "description": "True if Spot account is a billing account."
                                  },
                                  "enabledDate": {
                                    "type": "string",
                                    "description": "Timestamp when the Spot account was onboarded to Billing Engine.",
                                    "example": "2019-08-24T14:15:22Z"
                                  },
                                  "updatedDate": {
                                    "type": "string",
                                    "description": "Timestamp when Billing Engine config was last modified.",
                                    "example": "2019-08-24T14:15:22Z"
                                  },
                                  "config": {
                                    "description": "Provider-specific configuration.",
                                    "type": "object",
                                    "nullable": true
                                  }
                                },
                                "type": "object",
                                "required": [
                                  "accountId",
                                  "organizationId",
                                  "cloudProvider",
                                  "externalProviderId",
                                  "isBillingAccount",
                                  "enabledDate",
                                  "updatedDate"
                                ],
                                "title": "SetupCreateBERegisteredAccountResponse",
                                "description": "Represents a Spot account on which Billing Engine has been registered / enabled. [kind/spotinst:cloudBilling:beRegisteredAccount]"
                              }
                            },
                            "kind": {
                              "example": "spotinst:cloudBilling:beRegisteredAccount"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            },
            "description": "Invalid request error response. Adjust the request before retrying."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            },
            "description": "Not found error response. The requested resource does not exist."
          },
          "422": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          }
        }
      }
    },
    "/cloudBilling/v1/setup/account/validation": {
      "post": {
        "tags": [
          "Accounts"
        ],
        "summary": "Perform Billing Engine Setup Validations",
        "description": "Validate that Billing Engine can be setup on the specified Spot Account.",
        "operationId": "validateSetupAccountCloudBillingV1SetupAccountValidationPost",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/paths/~1cloudBilling~1v1~1setup~1account/post/requestBody/content/application~1json/schema"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1healthCheck/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "url": {
                              "example": "/cloudBilling/v1/setup/account/validation"
                            },
                            "method": {
                              "example": "POST"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "items": {
                                "$ref": "#/paths/~1cbi~1v1~1setup~1account~1validation/post/responses/200/content/application~1json/schema/allOf/1/properties/response/properties/items/items"
                              }
                            },
                            "kind": {
                              "example": "spotinst:cbi:accountRegistrationValidation"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            },
            "description": "Invalid request error response. Adjust the request before retrying."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            },
            "description": "Not found error response. The requested resource does not exist."
          },
          "422": {
            "description": "Error response.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/paths/~1cbi~1v1~1access~1policy/get/responses/400/content/application~1json/schema"
                }
              }
            }
          }
        }
      }
    },
    "/ccoUsageExporter/flexeraIntegration": {
      "get": {
        "summary": "Get CCO Integration",
        "description": "Get details for the selected Flexera CCO integration\n",
        "operationId": "getFlexeraCcoIntegration",
        "tags": [
          "Flexera CCO Integration"
        ],
        "security": [
          {
            "authWithoutAccount": []
          }
        ],
        "responses": {
          "200": {
            "description": "Get Flexera CCO Integration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "description": "Original request properties\n",
                          "properties": {
                            "id": {
                              "type": "string",
                              "example": "46642c7d-bc29-417d-8ce4-79626f00c63c",
                              "description": "Unique ID associated with this request\n"
                            },
                            "url": {
                              "type": "string",
                              "example": "/ccoUsageExporter/flexeraIntegration",
                              "description": "The URL that was used for the request\n"
                            },
                            "method": {
                              "type": "string",
                              "description": "The HTTP **METHOD** used for the request\n"
                            },
                            "timestamp": {
                              "type": "string",
                              "example": "2018-11-19T13:49:11.911Z",
                              "description": "When the request was received by Spot\n"
                            }
                          }
                        },
                        "response": {
                          "type": "object",
                          "description": "Response package that includes the status, type, and any relevant data\n",
                          "properties": {
                            "status": {
                              "type": "object",
                              "properties": {
                                "code": {
                                  "type": "integer",
                                  "example": 200,
                                  "description": "HTTP status code associated with this response\n"
                                },
                                "message": {
                                  "type": "string",
                                  "example": "OK",
                                  "description": "HTTP status message associated with the status code\n"
                                }
                              }
                            },
                            "kind": {
                              "type": "string",
                              "example": "mcs:ocean:ccoUsageExporter:flexeraIntegration",
                              "description": "Specifies the data type for each object returned in the response\n"
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "method": {
                              "example": "GET"
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "spotOrganizationId": {
                                    "type": "integer",
                                    "description": "Spot Organization ID\n",
                                    "example": 172012381312
                                  },
                                  "flexeraOrganizationId": {
                                    "type": "integer",
                                    "description": "Flexera Organization ID\n",
                                    "example": 9921
                                  },
                                  "flexeraBillConnectId": {
                                    "type": "string",
                                    "description": "Flexera Bill Connect ID\n",
                                    "example": "cbi-oi-ocean-bill-connect"
                                  }
                                }
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "post": {
        "summary": "Create CCO Integration",
        "description": "Create Flexera CCO integration\n",
        "operationId": "createFlexeraCcoIntegration",
        "tags": [
          "Flexera CCO Integration"
        ],
        "security": [
          {
            "authWithoutAccount": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/paths/~1ccoUsageExporter~1flexeraIntegration/put/requestBody/content/application~1json/schema/allOf/0"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Create Flexera CCO Integration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1ccoUsageExporter~1flexeraIntegration/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "method": {
                              "example": "POST"
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "$ref": "#/paths/~1ccoUsageExporter~1flexeraIntegration/get/responses/200/content/application~1json/schema/allOf/2/properties/response/properties/items/items"
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "put": {
        "summary": "Update CCO Integration",
        "description": "Update Flexera CCO integration.\n\nFlexera CCO integration API supports partial updates, allowing specific fields to be updated without sending the entire resource.\n",
        "operationId": "updateFlexeraCcoIntegration",
        "tags": [
          "Flexera CCO Integration"
        ],
        "security": [
          {
            "authWithoutAccount": []
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "flexeraOrganizationId": {
                        "type": "integer",
                        "description": "Flexera Organization ID\n",
                        "example": 9921
                      },
                      "flexeraRefreshToken": {
                        "type": "string",
                        "description": "Flexera Refresh Token\n",
                        "example": "token"
                      },
                      "flexeraBillConnectId": {
                        "type": "string",
                        "description": "Flexera Bill Connect ID\n",
                        "example": "cbi-oi-ocean-container-cost"
                      }
                    }
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Update Flexera CCO Integration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1ccoUsageExporter~1flexeraIntegration/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "method": {
                              "example": "PUT"
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "items": {
                              "type": "array",
                              "description": "Array of data objects\n",
                              "items": {
                                "$ref": "#/paths/~1ccoUsageExporter~1flexeraIntegration/get/responses/200/content/application~1json/schema/allOf/2/properties/response/properties/items/items"
                              }
                            },
                            "count": {
                              "type": "integer",
                              "example": 1,
                              "description": "Size of the data object array\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      },
      "delete": {
        "summary": "Delete CCO Integration",
        "description": "Delete Flexera CCO integration\n",
        "operationId": "deleteFlexeraCcoIntegration",
        "tags": [
          "Flexera CCO Integration"
        ],
        "security": [
          {
            "authWithoutAccount": []
          }
        ],
        "responses": {
          "200": {
            "description": "Delete Flexera CCO Integration Response",
            "content": {
              "application/json": {
                "schema": {
                  "allOf": [
                    {
                      "$ref": "#/paths/~1ccoUsageExporter~1flexeraIntegration/get/responses/200/content/application~1json/schema/allOf/0"
                    },
                    {
                      "type": "object",
                      "properties": {
                        "request": {
                          "type": "object",
                          "properties": {
                            "method": {
                              "example": "DELETE"
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "response": {
                          "type": "object",
                          "properties": {
                            "removed": {
                              "type": "boolean",
                              "example": true,
                              "description": "Response is `true` if the Flexera CCO integration was successfully deleted\n"
                            }
                          }
                        }
                      }
                    }
                  ]
                }
              }
            }
          },
          "400": {
            "description": "Bad Request"
          }
        }
      }
    }
  }
}
