openapi: 3.1.0 info: title: Spot Elastigroup API description: >- The Spot Elastigroup API enables programmatic management of Elastigroup compute groups across AWS, Azure, and GCP. Elastigroup simplifies and automates cloud infrastructure for scale-out applications, continuously analyzing resource usage and optimizing compute resources to ensure availability while leveraging the lowest-cost compute options including spot instances, reserved instances, and on-demand capacity. version: 2.0.0 contact: name: Spot by Flexera url: https://docs.spot.io/ termsOfService: https://spot.io/terms-of-use/ servers: - url: https://api.spotinst.io description: Spot Production API security: - bearerAuth: [] tags: - name: Deployments description: Manage rolling deployments for Elastigroups. - name: Elastigroup AWS description: Manage Elastigroup compute groups in AWS. - name: Elastigroup Azure description: Manage Elastigroup compute groups in Azure. - name: Elastigroup GCP description: Manage Elastigroup compute groups in GCP. - name: EMR description: Manage Amazon EMR clusters with Elastigroup. - name: Stateful Instances description: Manage stateful instances within Elastigroups. paths: /aws/ec2/group: post: operationId: createElastigroupAWS summary: Spot Create Elastigroup (aws) description: Create a new Elastigroup in AWS. tags: - Elastigroup AWS parameters: - name: accountId in: query description: The Spot account ID. schema: type: string example: '500123' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ElastigroupAWSRequest' examples: CreateelastigroupawsRequestExample: summary: Default createElastigroupAWS request x-microcks-default: true value: group: name: Example Title description: A sample description. region: example_value capacity: target: 10 minimum: 10 maximum: 10 unit: instance strategy: risk: 10 onDemandCount: 10 availabilityVsCost: balanced fallbackToOd: true utilizeReservedInstances: true compute: instanceTypes: ondemand: example_value spot: {} availabilityZones: - {} launchSpecification: imageId: '500123' securityGroupIds: {} keyPair: example_value scheduling: tasks: - {} responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ElastigroupResponse' examples: Createelastigroupaws200Example: summary: Default createElastigroupAWS 200 response x-microcks-default: true value: request: example_value response: items: - {} x-microcks-operation: delay: 0 dispatcher: FALLBACK get: operationId: listElastigroupsAWS summary: Spot List Elastigroups (aws) description: List all Elastigroups in the specified account. tags: - Elastigroup AWS parameters: - name: accountId in: query description: The Spot account ID. schema: type: string example: '500123' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ElastigroupListResponse' examples: Listelastigroupsaws200Example: summary: Default listElastigroupsAWS 200 response x-microcks-default: true value: request: example_value response: items: - {} x-microcks-operation: delay: 0 dispatcher: FALLBACK /aws/ec2/group/{groupId}: get: operationId: getElastigroupAWS summary: Spot Get Elastigroup (aws) description: Get the configuration of an existing Elastigroup. tags: - Elastigroup AWS parameters: - name: groupId in: path required: true schema: type: string example: '500123' - name: accountId in: query schema: type: string example: '500123' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ElastigroupResponse' examples: Getelastigroupaws200Example: summary: Default getElastigroupAWS 200 response x-microcks-default: true value: request: example_value response: items: - {} x-microcks-operation: delay: 0 dispatcher: FALLBACK put: operationId: updateElastigroupAWS summary: Spot Update Elastigroup (aws) description: Update an existing Elastigroup configuration. tags: - Elastigroup AWS parameters: - name: groupId in: path required: true schema: type: string example: '500123' - name: accountId in: query schema: type: string example: '500123' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ElastigroupAWSRequest' examples: UpdateelastigroupawsRequestExample: summary: Default updateElastigroupAWS request x-microcks-default: true value: group: name: Example Title description: A sample description. region: example_value capacity: target: 10 minimum: 10 maximum: 10 unit: instance strategy: risk: 10 onDemandCount: 10 availabilityVsCost: balanced fallbackToOd: true utilizeReservedInstances: true compute: instanceTypes: ondemand: example_value spot: {} availabilityZones: - {} launchSpecification: imageId: '500123' securityGroupIds: {} keyPair: example_value scheduling: tasks: - {} responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK delete: operationId: deleteElastigroupAWS summary: Spot Delete Elastigroup (aws) description: Delete an existing Elastigroup. tags: - Elastigroup AWS parameters: - name: groupId in: path required: true schema: type: string example: '500123' - name: accountId in: query schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /aws/ec2/group/{groupId}/status: get: operationId: getElastigroupStatusAWS summary: Spot Get Elastigroup Status (aws) description: Get the status of instances in an Elastigroup. tags: - Elastigroup AWS parameters: - name: groupId in: path required: true schema: type: string example: '500123' - name: accountId in: query schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /aws/ec2/group/{groupId}/scale/up: put: operationId: scaleUpElastigroupAWS summary: Spot Scale up Elastigroup (aws) description: Scale up the number of instances in an Elastigroup. tags: - Elastigroup AWS parameters: - name: groupId in: path required: true schema: type: string example: '500123' - name: adjustment in: query description: Number of instances to add. schema: type: integer example: 10 responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /aws/ec2/group/{groupId}/scale/down: put: operationId: scaleDownElastigroupAWS summary: Spot Scale Down Elastigroup (aws) description: Scale down the number of instances in an Elastigroup. tags: - Elastigroup AWS parameters: - name: groupId in: path required: true schema: type: string example: '500123' - name: adjustment in: query description: Number of instances to remove. schema: type: integer example: 10 responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /aws/ec2/group/{groupId}/roll: post: operationId: rollElastigroupAWS summary: Spot Roll Elastigroup (aws) description: >- Trigger a roll (rolling update) for an Elastigroup. Replaces existing instances with new ones according to the configured deployment strategy. tags: - Deployments parameters: - name: groupId in: path required: true schema: type: string example: '500123' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/RollRequest' examples: RollelastigroupawsRequestExample: summary: Default rollElastigroupAWS request x-microcks-default: true value: batchSizePercentage: 10 gracePeriod: 10 healthCheckType: EC2 responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK get: operationId: listRollsAWS summary: Spot List Rolls (aws) description: List all rolls for an Elastigroup. tags: - Deployments parameters: - name: groupId in: path required: true schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /aws/ec2/group/{groupId}/roll/{rollId}: get: operationId: getRollStatusAWS summary: Spot Get Roll Status (aws) description: Get the status of a specific roll. tags: - Deployments parameters: - name: groupId in: path required: true schema: type: string example: '500123' - name: rollId in: path required: true schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK put: operationId: stopRollAWS summary: Spot Stop Roll (aws) description: Stop an in-progress roll. tags: - Deployments parameters: - name: groupId in: path required: true schema: type: string example: '500123' - name: rollId in: path required: true schema: type: string example: '500123' requestBody: required: true content: application/json: schema: type: object properties: roll: type: object properties: status: type: string enum: - STOPPED examples: StoprollawsRequestExample: summary: Default stopRollAWS request x-microcks-default: true value: roll: status: STOPPED responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /aws/ec2/group/{groupId}/statefulInstance: get: operationId: listStatefulInstances summary: Spot List Stateful Instances description: List all stateful instances in an Elastigroup. tags: - Stateful Instances parameters: - name: groupId in: path required: true schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /aws/ec2/group/{groupId}/statefulInstance/{statefulInstanceId}: put: operationId: recycleStatefulInstance summary: Spot Recycle Stateful Instance description: Recycle a stateful instance, replacing it with a new one. tags: - Stateful Instances parameters: - name: groupId in: path required: true schema: type: string example: '500123' - name: statefulInstanceId in: path required: true schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK delete: operationId: deallocateStatefulInstance summary: Spot Deallocate Stateful Instance description: Deallocate a stateful instance and its resources. tags: - Stateful Instances parameters: - name: groupId in: path required: true schema: type: string example: '500123' - name: statefulInstanceId in: path required: true schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /aws/ec2/group/{groupId}/logs: get: operationId: getElastigroupLogs summary: Spot Get Elastigroup Logs description: Retrieve activity logs for an Elastigroup. tags: - Elastigroup AWS parameters: - name: groupId in: path required: true schema: type: string example: '500123' - name: fromDate in: query schema: type: string format: date-time example: '2026-01-15T10:30:00Z' - name: toDate in: query schema: type: string format: date-time example: '2026-01-15T10:30:00Z' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /aws/ec2/group/{groupId}/costs: get: operationId: getElastigroupCosts summary: Spot Get Elastigroup Costs description: Retrieve cost information for an Elastigroup. tags: - Elastigroup AWS parameters: - name: groupId in: path required: true schema: type: string example: '500123' - name: fromDate in: query schema: type: string format: date example: '2026-01-15' - name: toDate in: query schema: type: string format: date example: '2026-01-15' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /aws/emr/mrScaler: post: operationId: createEMRCluster summary: Spot Create Emr Cluster description: Create a new Amazon EMR cluster managed by Elastigroup. tags: - EMR requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EMRClusterRequest' examples: CreateemrclusterRequestExample: summary: Default createEMRCluster request x-microcks-default: true value: mrScaler: name: Example Title description: A sample description. region: example_value strategy: example_value compute: example_value responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK get: operationId: listEMRClusters summary: Spot List Emr Clusters description: List all EMR clusters managed by Elastigroup. tags: - EMR responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /aws/emr/mrScaler/{mrScalerId}: get: operationId: getEMRCluster summary: Spot Get Emr Cluster description: Get details of an EMR cluster. tags: - EMR parameters: - name: mrScalerId in: path required: true schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK put: operationId: updateEMRCluster summary: Spot Update Emr Cluster description: Update an existing EMR cluster. tags: - EMR parameters: - name: mrScalerId in: path required: true schema: type: string example: '500123' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/EMRClusterRequest' examples: UpdateemrclusterRequestExample: summary: Default updateEMRCluster request x-microcks-default: true value: mrScaler: name: Example Title description: A sample description. region: example_value strategy: example_value compute: example_value responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK delete: operationId: deleteEMRCluster summary: Spot Delete Emr Cluster description: Delete an EMR cluster. tags: - EMR parameters: - name: mrScalerId in: path required: true schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /azure/compute/group: post: operationId: createElastigroupAzure summary: Spot Create Elastigroup (azure) description: Create a new Elastigroup in Azure. tags: - Elastigroup Azure requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ElastigroupAzureRequest' examples: CreateelastigroupazureRequestExample: summary: Default createElastigroupAzure request x-microcks-default: true value: group: name: Example Title region: example_value resourceGroupName: example_value capacity: target: 10 minimum: 10 maximum: 10 strategy: spotPercentage: 10 fallbackToOd: true responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK get: operationId: listElastigroupsAzure summary: Spot List Elastigroups (azure) description: List all Elastigroups in Azure. tags: - Elastigroup Azure responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /azure/compute/group/{groupId}: get: operationId: getElastigroupAzure summary: Spot Get Elastigroup (azure) description: Get an existing Elastigroup in Azure. tags: - Elastigroup Azure parameters: - name: groupId in: path required: true schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK put: operationId: updateElastigroupAzure summary: Spot Update Elastigroup (azure) description: Update an existing Elastigroup in Azure. tags: - Elastigroup Azure parameters: - name: groupId in: path required: true schema: type: string example: '500123' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ElastigroupAzureRequest' examples: UpdateelastigroupazureRequestExample: summary: Default updateElastigroupAzure request x-microcks-default: true value: group: name: Example Title region: example_value resourceGroupName: example_value capacity: target: 10 minimum: 10 maximum: 10 strategy: spotPercentage: 10 fallbackToOd: true responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK delete: operationId: deleteElastigroupAzure summary: Spot Delete Elastigroup (azure) description: Delete an existing Elastigroup in Azure. tags: - Elastigroup Azure parameters: - name: groupId in: path required: true schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /gcp/gce/group: post: operationId: createElastigroupGCP summary: Spot Create Elastigroup (gcp) description: Create a new Elastigroup in GCP. tags: - Elastigroup GCP requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ElastigroupGCPRequest' examples: CreateelastigroupgcpRequestExample: summary: Default createElastigroupGCP request x-microcks-default: true value: group: name: Example Title description: A sample description. capacity: target: 10 minimum: 10 maximum: 10 strategy: preemptiblePercentage: 10 fallbackToOd: true responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK get: operationId: listElastigroupsGCP summary: Spot List Elastigroups (gcp) description: List all Elastigroups in GCP. tags: - Elastigroup GCP responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK /gcp/gce/group/{groupId}: get: operationId: getElastigroupGCP summary: Spot Get Elastigroup (gcp) description: Get an existing Elastigroup in GCP. tags: - Elastigroup GCP parameters: - name: groupId in: path required: true schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK put: operationId: updateElastigroupGCP summary: Spot Update Elastigroup (gcp) description: Update an existing Elastigroup in GCP. tags: - Elastigroup GCP parameters: - name: groupId in: path required: true schema: type: string example: '500123' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ElastigroupGCPRequest' examples: UpdateelastigroupgcpRequestExample: summary: Default updateElastigroupGCP request x-microcks-default: true value: group: name: Example Title description: A sample description. capacity: target: 10 minimum: 10 maximum: 10 strategy: preemptiblePercentage: 10 fallbackToOd: true responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK delete: operationId: deleteElastigroupGCP summary: Spot Delete Elastigroup (gcp) description: Delete an existing Elastigroup in GCP. tags: - Elastigroup GCP parameters: - name: groupId in: path required: true schema: type: string example: '500123' responses: '200': description: Successful response x-microcks-operation: delay: 0 dispatcher: FALLBACK components: securitySchemes: bearerAuth: type: http scheme: bearer description: >- Spot API uses Bearer Token Authentication. Include your API token in the Authorization header. schemas: ElastigroupAWSRequest: type: object properties: group: type: object properties: name: type: string description: type: string region: type: string capacity: type: object properties: target: type: integer minimum: type: integer maximum: type: integer unit: type: string enum: - instance - weight strategy: type: object properties: risk: type: integer description: Percentage of spot instances (0-100). onDemandCount: type: integer availabilityVsCost: type: string enum: - balanced - costOriented - availabilityOriented - cheapest fallbackToOd: type: boolean utilizeReservedInstances: type: boolean compute: type: object properties: instanceTypes: type: object properties: ondemand: type: string spot: type: array items: type: string availabilityZones: type: array items: type: object properties: name: type: string subnetId: type: string launchSpecification: type: object properties: imageId: type: string securityGroupIds: type: array items: type: string keyPair: type: string scheduling: type: object properties: tasks: type: array items: type: object properties: isEnabled: type: boolean taskType: type: string cronExpression: type: string example: example_value ElastigroupAzureRequest: type: object properties: group: type: object properties: name: type: string region: type: string resourceGroupName: type: string capacity: type: object properties: target: type: integer minimum: type: integer maximum: type: integer strategy: type: object properties: spotPercentage: type: integer fallbackToOd: type: boolean example: example_value ElastigroupGCPRequest: type: object properties: group: type: object properties: name: type: string description: type: string capacity: type: object properties: target: type: integer minimum: type: integer maximum: type: integer strategy: type: object properties: preemptiblePercentage: type: integer fallbackToOd: type: boolean example: example_value ElastigroupResponse: type: object properties: request: type: object example: example_value response: type: object properties: items: type: array items: $ref: '#/components/schemas/Elastigroup' example: example_value ElastigroupListResponse: type: object properties: request: type: object example: example_value response: type: object properties: items: type: array items: $ref: '#/components/schemas/Elastigroup' example: example_value Elastigroup: type: object properties: id: type: string example: abc123 name: type: string example: Example Title description: type: string example: A sample description. region: type: string example: example_value capacity: type: object properties: target: type: integer minimum: type: integer maximum: type: integer example: example_value createdAt: type: string format: date-time example: '2026-01-15T10:30:00Z' updatedAt: type: string format: date-time example: '2026-01-15T10:30:00Z' RollRequest: type: object properties: batchSizePercentage: type: integer description: Percentage of instances to replace in each batch. example: 10 gracePeriod: type: integer description: Grace period in seconds before checking health. example: 10 healthCheckType: type: string enum: - EC2 - ELB - TARGET_GROUP - NONE example: EC2 EMRClusterRequest: type: object properties: mrScaler: type: object properties: name: type: string description: type: string region: type: string strategy: type: object compute: type: object example: example_value