> For the complete documentation index, see [llms.txt](https://docs.ionos.com/cloud/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ionos.com/cloud/api-reference/compute-services/vm-auto-scaling/models.md).

# Models

## The Action object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"Action":{"description":"The scaling action associated with a VM Auto Scaling Group.","type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"metadata":{"$ref":"#/components/schemas/MetadataBasic"},"properties":{"$ref":"#/components/schemas/ActionProperties"}}},"MetadataBasic":{"required":["createdDate","etag","lastModifiedDate","state"],"description":"The resource metadata.","type":"object","readOnly":true,"properties":{"createdDate":{"format":"date-time","description":"The date the resource was created.","type":"string"},"etag":{"description":"The resource etag.","type":"string"},"lastModifiedDate":{"format":"date-time","description":"The date the resource was last modified.","type":"string"},"state":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."}}},"ActionProperties":{"required":["actionStatus","actionType"],"description":"The properties of the resource; the content depends on the resource type.","type":"object","properties":{"actionStatus":{"$ref":"#/components/schemas/ActionStatus"},"actionType":{"$ref":"#/components/schemas/ActionType"}}},"ActionStatus":{"enum":["FAILED","IN_PROGRESS","SUCCESSFUL"],"type":"string","readOnly":true},"ActionType":{"description":"The type of scaling action. A 'SCALE_IN' action deletes servers until the group has at most the number of servers. A 'SCALE_OUT' action creates servers until the group has at least the servers.","enum":["SCALE_IN","SCALE_OUT"],"type":"string"}}}}
```

## The ActionAmount object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ActionAmount":{"enum":["ABSOLUTE","PERCENTAGE"],"type":"string","description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to\nthe current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200."}}}}
```

## The ActionCollection object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ActionCollection":{"type":"object","required":["id"],"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"items":{"items":{"$ref":"#/components/schemas/Action"}}}},"Action":{"description":"The scaling action associated with a VM Auto Scaling Group.","type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"metadata":{"$ref":"#/components/schemas/MetadataBasic"},"properties":{"$ref":"#/components/schemas/ActionProperties"}}},"MetadataBasic":{"required":["createdDate","etag","lastModifiedDate","state"],"description":"The resource metadata.","type":"object","readOnly":true,"properties":{"createdDate":{"format":"date-time","description":"The date the resource was created.","type":"string"},"etag":{"description":"The resource etag.","type":"string"},"lastModifiedDate":{"format":"date-time","description":"The date the resource was last modified.","type":"string"},"state":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."}}},"ActionProperties":{"required":["actionStatus","actionType"],"description":"The properties of the resource; the content depends on the resource type.","type":"object","properties":{"actionStatus":{"$ref":"#/components/schemas/ActionStatus"},"actionType":{"$ref":"#/components/schemas/ActionType"}}},"ActionStatus":{"enum":["FAILED","IN_PROGRESS","SUCCESSFUL"],"type":"string","readOnly":true},"ActionType":{"description":"The type of scaling action. A 'SCALE_IN' action deletes servers until the group has at most the number of servers. A 'SCALE_OUT' action creates servers until the group has at least the servers.","enum":["SCALE_IN","SCALE_OUT"],"type":"string"}}}}
```

## The ActionProperties object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ActionProperties":{"required":["actionStatus","actionType"],"description":"The properties of the resource; the content depends on the resource type.","type":"object","properties":{"actionStatus":{"$ref":"#/components/schemas/ActionStatus"},"actionType":{"$ref":"#/components/schemas/ActionType"}}},"ActionStatus":{"enum":["FAILED","IN_PROGRESS","SUCCESSFUL"],"type":"string","readOnly":true},"ActionType":{"description":"The type of scaling action. A 'SCALE_IN' action deletes servers until the group has at most the number of servers. A 'SCALE_OUT' action creates servers until the group has at least the servers.","enum":["SCALE_IN","SCALE_OUT"],"type":"string"}}}}
```

## The ActionStatus object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ActionStatus":{"enum":["FAILED","IN_PROGRESS","SUCCESSFUL"],"type":"string","readOnly":true}}}}
```

## The ActionType object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ActionType":{"description":"The type of scaling action. A 'SCALE_IN' action deletes servers until the group has at most the number of servers. A 'SCALE_OUT' action creates servers until the group has at least the servers.","enum":["SCALE_IN","SCALE_OUT"],"type":"string"}}}}
```

## The AvailabilityZone object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"AvailabilityZone":{"enum":["AUTO"],"type":"string","description":"The zone where the VMs are created. The availability zone is always automatically set to 'AUTO' for performance reasons. Even if you set another value, e.g. 'null', or leave it empty."}}}}
```

## The CpuFamily object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"CpuFamily":{"enum":["INTEL_SIERRAFOREST","INTEL_ICELAKE","AMD_OPTERON","INTEL_SKYLAKE","INTEL_XEON"],"type":"string","description":"The CPU family for the VMs created with this configuration. If the value is 'null', the VM is created with the default CPU family for the assigned site."}}}}
```

## The BusType object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"BusType":{"enum":["VIRTIO","IDE"],"type":"string","default":"VIRTIO","description":"The bus type of the volume. Default setting is 'VIRTIO'. The bus type 'IDE' is also supported."}}}}
```

## The DatacenterServer object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"DatacenterServer":{"type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}}}}}
```

## The ParseError object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ParseError":{"type":"object","properties":{"httpStatus":{"format":"int32","type":"integer"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ErrorMessageParse"}},"errorUuid":{"format":"uuid","pattern":"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}","type":"string"}}},"ErrorMessageParse":{"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The Error401 object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"Error401":{"type":"object","properties":{"httpStatus":{"format":"int32","type":"integer"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/Error401Message"}}}},"Error401Message":{"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The Error404 object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"Error404":{"type":"object","properties":{"httpStatus":{"format":"int32","type":"integer"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/Error404Message"}}}},"Error404Message":{"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The ErrorAuthorize object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ErrorAuthorize":{"type":"object","properties":{"httpStatus":{"format":"int32","type":"integer"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ErrorAuthorizeMessage"}}}},"ErrorAuthorizeMessage":{"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The ErrorGroupValidateMessage object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ErrorGroupValidateMessage":{"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The ErrorMessage object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ErrorMessage":{"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The ErrorMessageParse object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ErrorMessageParse":{"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The Error401Message object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"Error401Message":{"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The Error404Message object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"Error404Message":{"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The ErrorAuthorizeMessage object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ErrorAuthorizeMessage":{"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The ErrorGroupValidate object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ErrorGroupValidate":{"type":"object","properties":{"httpStatus":{"format":"int32","type":"integer"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ErrorGroupValidateMessage"}}}},"ErrorGroupValidateMessage":{"type":"object","properties":{"errorCode":{"type":"string"},"message":{"type":"string"}}}}}}
```

## The GroupPost object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"GroupPost":{"description":"A group of virtual servers where the number of replicas can be scaled automatically.","required":["properties","id"],"type":"object","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"metadata":{"$ref":"#/components/schemas/Metadata"},"properties":{"$ref":"#/components/schemas/GroupProperties"},"entities":{"description":"The entities associated with this resource. The content depends on the resource type.","type":"object","readOnly":true,"properties":{"actions":{"$ref":"#/components/schemas/ActionsLinkResource"},"servers":{"$ref":"#/components/schemas/ServersLinkResource"}}}}},"Metadata":{"required":["createdBy","createdByUserId","createdDate","etag","lastModifiedBy","lastModifiedByUserId","lastModifiedDate","state"],"description":"The resource metadata.","type":"object","readOnly":true,"properties":{"createdBy":{"description":"The user who created the resource.","type":"string"},"createdByUserId":{"description":"The ID of the user who created the resource.","type":"string"},"createdDate":{"format":"date-time","description":"The date the resource was created.","type":"string"},"etag":{"description":"The resource etag.","type":"string"},"lastModifiedBy":{"description":"The last user who modified the resource.","type":"string"},"lastModifiedByUserId":{"description":"The ID of the last user who modified the resource.","type":"string"},"lastModifiedDate":{"format":"date-time","description":"The date the resource was last modified.","type":"string"},"state":{"$ref":"#/components/schemas/MetadataState"}}},"MetadataState":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."},"GroupProperties":{"type":"object","required":["datacenter","location"],"properties":{"datacenter":{"type":"object","required":["id"],"description":"The VMs for this VM Auto Scaling Description are created in this virtual data center.","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":false},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}},"location":{"description":"The data center location.","type":"string","readOnly":true},"maxReplicaCount":{"format":"int64","description":"The maximum value for the number of replicas. Must be >= 0 and <= 100. Will be enforced for both automatic and manual changes.","maximum":100,"minimum":0,"type":"integer"},"minReplicaCount":{"format":"int64","description":"The minimum value for the number of replicas. Must be >= 0 and <= 100. Will be enforced for both automatic and manual changes","maximum":100,"minimum":0,"type":"integer"},"name":{"description":"The name of the VM Auto Scaling Group. This field must not be null or blank.","maxLength":255,"type":"string"},"policy":{"$ref":"#/components/schemas/GroupPolicy"},"replicaConfiguration":{"$ref":"#/components/schemas/ReplicaPropertiesPost"}}},"GroupPolicy":{"required":["metric","scaleInAction","scaleInThreshold","scaleOutAction","scaleOutThreshold","unit"],"type":"object","description":"Defines the behavior of this VM Auto Scaling Group. A policy consists of triggers and actions, where an action is an automated behavior, and the trigger defines the circumstances under which the action is triggered. Currently, two separate actions are supported, namely scaling inward and outward, triggered by the thresholds defined for a particular metric.","properties":{"metric":{"$ref":"#/components/schemas/Metric"},"range":{"format":"duration","description":"Specifies the time range for which the samples are to be aggregated. Must be >= 2 minutes.","type":"string","default":"120s"},"scaleInAction":{"$ref":"#/components/schemas/GroupPolicyScaleInAction"},"scaleInThreshold":{"description":"The lower threshold for the value of the 'metric'. Used with the `less than` (<) operator. When this value is exceeded, a scale-in action is triggered, specified by the 'scaleInAction' property. The value must have a higher minimum delta to the 'scaleOutThreshold', depending on the 'metric', to avoid competing for actions at the same time.","type":"number"},"scaleOutAction":{"$ref":"#/components/schemas/GroupPolicyScaleOutAction"},"scaleOutThreshold":{"description":"The upper threshold for the value of the 'metric'. Used with the 'greater than' (>) operator. A scale-out action is triggered when this value is exceeded, specified by the 'scaleOutAction' property. The value must have a lower minimum delta to the 'scaleInThreshold', depending on the metric, to avoid competing for actions simultaneously. If 'properties.policy.unit=TOTAL', a value >= 40 must be chosen.","type":"number"},"unit":{"$ref":"#/components/schemas/QueryUnit"}}},"Metric":{"enum":["INSTANCE_CPU_UTILIZATION_AVERAGE","INSTANCE_NETWORK_IN_BYTES","INSTANCE_NETWORK_IN_PACKETS","INSTANCE_NETWORK_OUT_BYTES","INSTANCE_NETWORK_OUT_PACKETS"],"type":"string","description":"The metric that triggers the scaling actions. Metric values are checked at fixed intervals."},"GroupPolicyScaleInAction":{"required":["amount","amountType","deleteVolumes"],"type":"object","description":"Defines the action to be taken when the 'scaleInThreshold' is exceeded. Here, scaling is always about removing VMs associated with this VM Auto Scaling Group. By default, the termination policy is 'OLDEST_SERVER_FIRST' is effective.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the next scaling action is started. With a scaling action in progress, no second scaling action is started for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum value of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"},"terminationPolicy":{"$ref":"#/components/schemas/TerminationPolicyType"},"deleteVolumes":{"description":"If set to `true`, when deleting an replica during scale in, any attached volume will also be deleted. When set to `false`, all volumes remain in the datacenter and must be deleted manually.\n\n**Note**, that every scale-out creates new volumes. When they are not deleted, they will eventually use all of your contracts resource limits. At this point, scaling out would not be possible anymore.","type":"boolean"}}},"ActionAmount":{"enum":["ABSOLUTE","PERCENTAGE"],"type":"string","description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to\nthe current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200."},"TerminationPolicyType":{"enum":["OLDEST_SERVER_FIRST","NEWEST_SERVER_FIRST","RANDOM"],"type":"string","description":"The type of termination policy for the VM Auto Scaling Group to follow a specific pattern for scaling-in replicas. The default termination policy is 'OLDEST_SERVER_FIRST'."},"GroupPolicyScaleOutAction":{"required":["amount","amountType"],"type":"object","description":"Defines the action to be performed when the 'scaleOutThreshold' is exceeded. Here, scaling is always about adding new VMs to this VM Auto Scaling Group.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the following scaling action is started. While a scaling action is in progress, no second action is initiated for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"}}},"QueryUnit":{"enum":["PER_HOUR","PER_MINUTE","PER_SECOND","TOTAL"],"type":"string","default":"TOTAL","description":"The units of the applied metric. 'TOTAL' can only be combined with 'INSTANCE_CPU_UTILIZATION_AVERAGE'."},"ReplicaPropertiesPost":{"required":["cores","ram"],"type":"object","properties":{"availabilityZone":{"$ref":"#/components/schemas/AvailabilityZone"},"cores":{"format":"int32","description":"The total number of cores for the VMs.","minimum":1,"type":"integer"},"cpuFamily":{"$ref":"#/components/schemas/CpuFamily"},"nics":{"description":"The list of NICs associated with this replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaNic"}},"ram":{"format":"int32","description":"The size of the memory for the VMs in MB. The size must be in multiples of 256 MB, with a minimum of 256 MB; if you set 'ramHotPlug=TRUE', you must use at least 1024 MB. If you set the RAM size to more than 240 GB, 'ramHotPlug=FALSE' is fixed.","type":"integer"},"volumes":{"description":"List of volumes associated with this Replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaVolumePost"}}}},"AvailabilityZone":{"enum":["AUTO"],"type":"string","description":"The zone where the VMs are created. The availability zone is always automatically set to 'AUTO' for performance reasons. Even if you set another value, e.g. 'null', or leave it empty."},"CpuFamily":{"enum":["INTEL_SIERRAFOREST","INTEL_ICELAKE","AMD_OPTERON","INTEL_SKYLAKE","INTEL_XEON"],"type":"string","description":"The CPU family for the VMs created with this configuration. If the value is 'null', the VM is created with the default CPU family for the assigned site."},"ReplicaNic":{"type":"object","required":["lan","name"],"properties":{"lan":{"format":"int32","description":"The LAN ID of this replica NIC.","minimum":1,"type":"integer"},"name":{"description":"The replica NIC name.","maxLength":255,"type":"string"},"dhcp":{"description":"DHCP for this replica NIC. This is an optional attribute with the default value 'TRUE' if not specified in the request payload or as null.","type":"boolean"},"firewallActive":{"description":"Activate or deactivate the firewall. By default, an active firewall without any defined rules will block all incoming network traffic except for the firewall rules that explicitly allows certain protocols, IP addresses and ports.","type":"boolean"},"firewallType":{"description":"The type of firewall rules that will be allowed on the NIC. If not specified, the default INGRESS value is used.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"flowLogs":{"description":"List of all flow logs for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFlowLog"}},"firewallRules":{"description":"List of all firewall rules for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFirewallRule"}},"targetGroup":{"$ref":"#/components/schemas/TargetGroup"}}},"NicFlowLog":{"required":["name","action","direction","bucket"],"type":"object","properties":{"name":{"description":"The flow log name.","type":"string"},"action":{"description":"Specifies the traffic action pattern.","enum":["ACCEPTED","REJECTED","ALL"],"type":"string"},"direction":{"description":"Specifies the traffic direction pattern.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"bucket":{"description":"The S3 bucket name of an existing IONOS CLOUD S3 bucket.","type":"string"}}},"NicFirewallRule":{"required":["protocol"],"type":"object","properties":{"name":{"description":"The name of the firewall rule.","type":"string"},"protocol":{"description":"The protocol for the rule. The property cannot be modified after its creation (not allowed in update requests).","enum":["TCP","UDP","ICMP","ANY"],"type":"string"},"sourceMac":{"description":"Only traffic originating from the respective MAC address is permitted. Valid format: 'aa:bb:cc:dd:ee:ff'. The value 'null' allows traffic from any MAC address.","pattern":"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$","type":"string"},"sourceIp":{"description":"Only traffic originating from the respective IPv4 address is permitted. The value 'null' allows traffic from any IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"targetIp":{"description":"If the target NIC has multiple IP addresses, only the traffic directed to the respective IP address of the NIC is allowed. The value 'null' allows traffic to any target IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"icmpCode":{"description":"Sets the allowed code (from 0 to 254) when ICMP protocol is selected. The value 'null'' allows all codes.","type":"integer","minimum":0,"maximum":254},"icmpType":{"description":"Sets the allowed type (from 0 to 254) if the protocol ICMP is selected. The value 'null' allows all types.","type":"integer","minimum":0,"maximum":254},"portRangeStart":{"description":"Sets the initial range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"portRangeEnd":{"description":"Sets the end range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"type":{"description":"The firewall rule type. If not specified, the default value 'INGRESS' is used.","enum":["INGRESS","EGRESS"],"type":"string"}}},"TargetGroup":{"description":"In order to link VM to ALB, target group must be provided","type":"object","required":["targetGroupId","port","weight"],"properties":{"targetGroupId":{"description":"id","type":"string"},"port":{"description":"port","type":"integer"},"weight":{"description":"weight","type":"integer"}}},"ReplicaVolumePost":{"required":["type","name","size","bootOrder"],"type":"object","properties":{"image":{"format":"uuid","description":"The image installed on the disk. Currently, only the UUID of the image is supported.\n\n>Note that either 'image' or 'imageAlias' must be specified, but not both.","pattern":"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}","type":"string"},"imageAlias":{"description":"The image installed on the volume. Must be an 'imageAlias' as specified via the images API. Note that one of 'image' or 'imageAlias' must be set, but not both.","type":"string"},"name":{"description":"The replica volume name.","maxLength":255,"type":"string"},"size":{"format":"int32","description":"The size of this replica volume in GB.","minimum":1,"type":"integer"},"sshKeys":{"description":"The SSH keys of this volume.","type":"array","items":{"type":"string"}},"type":{"$ref":"#/components/schemas/VolumeHwType"},"userData":{"description":"The user data (Cloud Init) for this replica volume.","type":"string"},"bus":{"$ref":"#/components/schemas/BusType"},"backupunitId":{"description":"The ID of the backup unit that the user has access to. The property is immutable and is only allowed to be set on creation of a new a volume. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.","type":"string"},"bootOrder":{"description":"Determines whether the volume will be used as a boot volume. Set to NONE, the volume will not be used as boot volume. Set to PRIMARY, the volume will be used as boot volume and set to AUTO will delegate the decision to the provisioning engine to decide whether to use the voluem as boot volume. Notice that exactly one volume can be set to PRIMARY or all of them set to AUTO.","type":"string","enum":["AUTO","NONE","PRIMARY"]},"imagePassword":{"description":"The image password for this replica volume.","type":"string"}}},"VolumeHwType":{"enum":["HDD","SSD","SSD_PREMIUM","SSD_STANDARD","ESSENTIAL","BALANCED","PERFORMANCE"],"type":"string","description":"The storage type of this replica volume. `ESSENTIAL`, `BALANCED`, and `PERFORMANCE` are the current performance classes (formerly HDD, SSD_STANDARD, and SSD_PREMIUM respectively); the legacy names remain valid but are deprecated."},"BusType":{"enum":["VIRTIO","IDE"],"type":"string","default":"VIRTIO","description":"The bus type of the volume. Default setting is 'VIRTIO'. The bus type 'IDE' is also supported."},"ActionsLinkResource":{"type":"object","required":["id"],"description":"The scaling actions of the specified VM Auto Scaling Group.","readOnly":true,"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}},"ServersLinkResource":{"type":"object","required":["id"],"description":"The servers linked to the VM Auto Scaling Group.","readOnly":true,"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}}}}}
```

## The Group object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"Group":{"description":"A group of virtual servers where the number of replicas can be scaled automatically.","required":["properties","id"],"type":"object","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"metadata":{"$ref":"#/components/schemas/Metadata"},"properties":{"$ref":"#/components/schemas/GroupProperties"},"entities":{"description":"The entities associated with this resource. The content depends on the resource type.","type":"object","readOnly":true,"properties":{"actions":{"$ref":"#/components/schemas/ActionCollection"},"servers":{"$ref":"#/components/schemas/ServerCollection"}}}}},"Metadata":{"required":["createdBy","createdByUserId","createdDate","etag","lastModifiedBy","lastModifiedByUserId","lastModifiedDate","state"],"description":"The resource metadata.","type":"object","readOnly":true,"properties":{"createdBy":{"description":"The user who created the resource.","type":"string"},"createdByUserId":{"description":"The ID of the user who created the resource.","type":"string"},"createdDate":{"format":"date-time","description":"The date the resource was created.","type":"string"},"etag":{"description":"The resource etag.","type":"string"},"lastModifiedBy":{"description":"The last user who modified the resource.","type":"string"},"lastModifiedByUserId":{"description":"The ID of the last user who modified the resource.","type":"string"},"lastModifiedDate":{"format":"date-time","description":"The date the resource was last modified.","type":"string"},"state":{"$ref":"#/components/schemas/MetadataState"}}},"MetadataState":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."},"GroupProperties":{"type":"object","required":["datacenter","location"],"properties":{"datacenter":{"type":"object","required":["id"],"description":"The VMs for this VM Auto Scaling Description are created in this virtual data center.","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":false},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}},"location":{"description":"The data center location.","type":"string","readOnly":true},"maxReplicaCount":{"format":"int64","description":"The maximum value for the number of replicas. Must be >= 0 and <= 100. Will be enforced for both automatic and manual changes.","maximum":100,"minimum":0,"type":"integer"},"minReplicaCount":{"format":"int64","description":"The minimum value for the number of replicas. Must be >= 0 and <= 100. Will be enforced for both automatic and manual changes","maximum":100,"minimum":0,"type":"integer"},"name":{"description":"The name of the VM Auto Scaling Group. This field must not be null or blank.","maxLength":255,"type":"string"},"policy":{"$ref":"#/components/schemas/GroupPolicy"},"replicaConfiguration":{"$ref":"#/components/schemas/ReplicaPropertiesPost"}}},"GroupPolicy":{"required":["metric","scaleInAction","scaleInThreshold","scaleOutAction","scaleOutThreshold","unit"],"type":"object","description":"Defines the behavior of this VM Auto Scaling Group. A policy consists of triggers and actions, where an action is an automated behavior, and the trigger defines the circumstances under which the action is triggered. Currently, two separate actions are supported, namely scaling inward and outward, triggered by the thresholds defined for a particular metric.","properties":{"metric":{"$ref":"#/components/schemas/Metric"},"range":{"format":"duration","description":"Specifies the time range for which the samples are to be aggregated. Must be >= 2 minutes.","type":"string","default":"120s"},"scaleInAction":{"$ref":"#/components/schemas/GroupPolicyScaleInAction"},"scaleInThreshold":{"description":"The lower threshold for the value of the 'metric'. Used with the `less than` (<) operator. When this value is exceeded, a scale-in action is triggered, specified by the 'scaleInAction' property. The value must have a higher minimum delta to the 'scaleOutThreshold', depending on the 'metric', to avoid competing for actions at the same time.","type":"number"},"scaleOutAction":{"$ref":"#/components/schemas/GroupPolicyScaleOutAction"},"scaleOutThreshold":{"description":"The upper threshold for the value of the 'metric'. Used with the 'greater than' (>) operator. A scale-out action is triggered when this value is exceeded, specified by the 'scaleOutAction' property. The value must have a lower minimum delta to the 'scaleInThreshold', depending on the metric, to avoid competing for actions simultaneously. If 'properties.policy.unit=TOTAL', a value >= 40 must be chosen.","type":"number"},"unit":{"$ref":"#/components/schemas/QueryUnit"}}},"Metric":{"enum":["INSTANCE_CPU_UTILIZATION_AVERAGE","INSTANCE_NETWORK_IN_BYTES","INSTANCE_NETWORK_IN_PACKETS","INSTANCE_NETWORK_OUT_BYTES","INSTANCE_NETWORK_OUT_PACKETS"],"type":"string","description":"The metric that triggers the scaling actions. Metric values are checked at fixed intervals."},"GroupPolicyScaleInAction":{"required":["amount","amountType","deleteVolumes"],"type":"object","description":"Defines the action to be taken when the 'scaleInThreshold' is exceeded. Here, scaling is always about removing VMs associated with this VM Auto Scaling Group. By default, the termination policy is 'OLDEST_SERVER_FIRST' is effective.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the next scaling action is started. With a scaling action in progress, no second scaling action is started for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum value of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"},"terminationPolicy":{"$ref":"#/components/schemas/TerminationPolicyType"},"deleteVolumes":{"description":"If set to `true`, when deleting an replica during scale in, any attached volume will also be deleted. When set to `false`, all volumes remain in the datacenter and must be deleted manually.\n\n**Note**, that every scale-out creates new volumes. When they are not deleted, they will eventually use all of your contracts resource limits. At this point, scaling out would not be possible anymore.","type":"boolean"}}},"ActionAmount":{"enum":["ABSOLUTE","PERCENTAGE"],"type":"string","description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to\nthe current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200."},"TerminationPolicyType":{"enum":["OLDEST_SERVER_FIRST","NEWEST_SERVER_FIRST","RANDOM"],"type":"string","description":"The type of termination policy for the VM Auto Scaling Group to follow a specific pattern for scaling-in replicas. The default termination policy is 'OLDEST_SERVER_FIRST'."},"GroupPolicyScaleOutAction":{"required":["amount","amountType"],"type":"object","description":"Defines the action to be performed when the 'scaleOutThreshold' is exceeded. Here, scaling is always about adding new VMs to this VM Auto Scaling Group.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the following scaling action is started. While a scaling action is in progress, no second action is initiated for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"}}},"QueryUnit":{"enum":["PER_HOUR","PER_MINUTE","PER_SECOND","TOTAL"],"type":"string","default":"TOTAL","description":"The units of the applied metric. 'TOTAL' can only be combined with 'INSTANCE_CPU_UTILIZATION_AVERAGE'."},"ReplicaPropertiesPost":{"required":["cores","ram"],"type":"object","properties":{"availabilityZone":{"$ref":"#/components/schemas/AvailabilityZone"},"cores":{"format":"int32","description":"The total number of cores for the VMs.","minimum":1,"type":"integer"},"cpuFamily":{"$ref":"#/components/schemas/CpuFamily"},"nics":{"description":"The list of NICs associated with this replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaNic"}},"ram":{"format":"int32","description":"The size of the memory for the VMs in MB. The size must be in multiples of 256 MB, with a minimum of 256 MB; if you set 'ramHotPlug=TRUE', you must use at least 1024 MB. If you set the RAM size to more than 240 GB, 'ramHotPlug=FALSE' is fixed.","type":"integer"},"volumes":{"description":"List of volumes associated with this Replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaVolumePost"}}}},"AvailabilityZone":{"enum":["AUTO"],"type":"string","description":"The zone where the VMs are created. The availability zone is always automatically set to 'AUTO' for performance reasons. Even if you set another value, e.g. 'null', or leave it empty."},"CpuFamily":{"enum":["INTEL_SIERRAFOREST","INTEL_ICELAKE","AMD_OPTERON","INTEL_SKYLAKE","INTEL_XEON"],"type":"string","description":"The CPU family for the VMs created with this configuration. If the value is 'null', the VM is created with the default CPU family for the assigned site."},"ReplicaNic":{"type":"object","required":["lan","name"],"properties":{"lan":{"format":"int32","description":"The LAN ID of this replica NIC.","minimum":1,"type":"integer"},"name":{"description":"The replica NIC name.","maxLength":255,"type":"string"},"dhcp":{"description":"DHCP for this replica NIC. This is an optional attribute with the default value 'TRUE' if not specified in the request payload or as null.","type":"boolean"},"firewallActive":{"description":"Activate or deactivate the firewall. By default, an active firewall without any defined rules will block all incoming network traffic except for the firewall rules that explicitly allows certain protocols, IP addresses and ports.","type":"boolean"},"firewallType":{"description":"The type of firewall rules that will be allowed on the NIC. If not specified, the default INGRESS value is used.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"flowLogs":{"description":"List of all flow logs for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFlowLog"}},"firewallRules":{"description":"List of all firewall rules for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFirewallRule"}},"targetGroup":{"$ref":"#/components/schemas/TargetGroup"}}},"NicFlowLog":{"required":["name","action","direction","bucket"],"type":"object","properties":{"name":{"description":"The flow log name.","type":"string"},"action":{"description":"Specifies the traffic action pattern.","enum":["ACCEPTED","REJECTED","ALL"],"type":"string"},"direction":{"description":"Specifies the traffic direction pattern.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"bucket":{"description":"The S3 bucket name of an existing IONOS CLOUD S3 bucket.","type":"string"}}},"NicFirewallRule":{"required":["protocol"],"type":"object","properties":{"name":{"description":"The name of the firewall rule.","type":"string"},"protocol":{"description":"The protocol for the rule. The property cannot be modified after its creation (not allowed in update requests).","enum":["TCP","UDP","ICMP","ANY"],"type":"string"},"sourceMac":{"description":"Only traffic originating from the respective MAC address is permitted. Valid format: 'aa:bb:cc:dd:ee:ff'. The value 'null' allows traffic from any MAC address.","pattern":"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$","type":"string"},"sourceIp":{"description":"Only traffic originating from the respective IPv4 address is permitted. The value 'null' allows traffic from any IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"targetIp":{"description":"If the target NIC has multiple IP addresses, only the traffic directed to the respective IP address of the NIC is allowed. The value 'null' allows traffic to any target IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"icmpCode":{"description":"Sets the allowed code (from 0 to 254) when ICMP protocol is selected. The value 'null'' allows all codes.","type":"integer","minimum":0,"maximum":254},"icmpType":{"description":"Sets the allowed type (from 0 to 254) if the protocol ICMP is selected. The value 'null' allows all types.","type":"integer","minimum":0,"maximum":254},"portRangeStart":{"description":"Sets the initial range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"portRangeEnd":{"description":"Sets the end range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"type":{"description":"The firewall rule type. If not specified, the default value 'INGRESS' is used.","enum":["INGRESS","EGRESS"],"type":"string"}}},"TargetGroup":{"description":"In order to link VM to ALB, target group must be provided","type":"object","required":["targetGroupId","port","weight"],"properties":{"targetGroupId":{"description":"id","type":"string"},"port":{"description":"port","type":"integer"},"weight":{"description":"weight","type":"integer"}}},"ReplicaVolumePost":{"required":["type","name","size","bootOrder"],"type":"object","properties":{"image":{"format":"uuid","description":"The image installed on the disk. Currently, only the UUID of the image is supported.\n\n>Note that either 'image' or 'imageAlias' must be specified, but not both.","pattern":"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}","type":"string"},"imageAlias":{"description":"The image installed on the volume. Must be an 'imageAlias' as specified via the images API. Note that one of 'image' or 'imageAlias' must be set, but not both.","type":"string"},"name":{"description":"The replica volume name.","maxLength":255,"type":"string"},"size":{"format":"int32","description":"The size of this replica volume in GB.","minimum":1,"type":"integer"},"sshKeys":{"description":"The SSH keys of this volume.","type":"array","items":{"type":"string"}},"type":{"$ref":"#/components/schemas/VolumeHwType"},"userData":{"description":"The user data (Cloud Init) for this replica volume.","type":"string"},"bus":{"$ref":"#/components/schemas/BusType"},"backupunitId":{"description":"The ID of the backup unit that the user has access to. The property is immutable and is only allowed to be set on creation of a new a volume. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.","type":"string"},"bootOrder":{"description":"Determines whether the volume will be used as a boot volume. Set to NONE, the volume will not be used as boot volume. Set to PRIMARY, the volume will be used as boot volume and set to AUTO will delegate the decision to the provisioning engine to decide whether to use the voluem as boot volume. Notice that exactly one volume can be set to PRIMARY or all of them set to AUTO.","type":"string","enum":["AUTO","NONE","PRIMARY"]},"imagePassword":{"description":"The image password for this replica volume.","type":"string"}}},"VolumeHwType":{"enum":["HDD","SSD","SSD_PREMIUM","SSD_STANDARD","ESSENTIAL","BALANCED","PERFORMANCE"],"type":"string","description":"The storage type of this replica volume. `ESSENTIAL`, `BALANCED`, and `PERFORMANCE` are the current performance classes (formerly HDD, SSD_STANDARD, and SSD_PREMIUM respectively); the legacy names remain valid but are deprecated."},"BusType":{"enum":["VIRTIO","IDE"],"type":"string","default":"VIRTIO","description":"The bus type of the volume. Default setting is 'VIRTIO'. The bus type 'IDE' is also supported."},"ActionCollection":{"type":"object","required":["id"],"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"items":{"items":{"$ref":"#/components/schemas/Action"}}}},"Action":{"description":"The scaling action associated with a VM Auto Scaling Group.","type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"metadata":{"$ref":"#/components/schemas/MetadataBasic"},"properties":{"$ref":"#/components/schemas/ActionProperties"}}},"MetadataBasic":{"required":["createdDate","etag","lastModifiedDate","state"],"description":"The resource metadata.","type":"object","readOnly":true,"properties":{"createdDate":{"format":"date-time","description":"The date the resource was created.","type":"string"},"etag":{"description":"The resource etag.","type":"string"},"lastModifiedDate":{"format":"date-time","description":"The date the resource was last modified.","type":"string"},"state":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."}}},"ActionProperties":{"required":["actionStatus","actionType"],"description":"The properties of the resource; the content depends on the resource type.","type":"object","properties":{"actionStatus":{"$ref":"#/components/schemas/ActionStatus"},"actionType":{"$ref":"#/components/schemas/ActionType"}}},"ActionStatus":{"enum":["FAILED","IN_PROGRESS","SUCCESSFUL"],"type":"string","readOnly":true},"ActionType":{"description":"The type of scaling action. A 'SCALE_IN' action deletes servers until the group has at most the number of servers. A 'SCALE_OUT' action creates servers until the group has at least the servers.","enum":["SCALE_IN","SCALE_OUT"],"type":"string"},"ServerCollection":{"type":"object","required":["id"],"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"items":{"items":{"$ref":"#/components/schemas/Server"}}}},"Server":{"type":"object","required":["id"],"description":"Links a data center server to an autoAuto Scaling scaling group. Note that this entities UUID is different from that of the data center server, whose UUID is stored in the `datacenterServer` property.","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"metadata":{"$ref":"#/components/schemas/MetadataBasic"},"properties":{"$ref":"#/components/schemas/ServerProperties"}}},"ServerProperties":{"required":["datacenterServer"],"type":"object","properties":{"datacenterServer":{"$ref":"#/components/schemas/DatacenterServer"},"name":{"type":"string"}}},"DatacenterServer":{"type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}}}}}
```

## The GroupPostResponse object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"GroupPostResponse":{"description":"A group of virtual servers where the number of replicas can be scaled automatically.","required":["properties","id"],"type":"object","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"metadata":{"$ref":"#/components/schemas/Metadata"},"properties":{"$ref":"#/components/schemas/GroupProperties"},"entities":{"description":"The entities associated with this resource. The content depends on the resource type.","type":"object","readOnly":true,"properties":{"actions":{"$ref":"#/components/schemas/ActionsLinkResource"},"servers":{"$ref":"#/components/schemas/ServersLinkResource"}}},"startedActions":{"description":"Any background activity caused by this request. You can use this to track the progress of such activities.","type":"array","items":{"$ref":"#/components/schemas/ActionResource"},"readOnly":true}}},"Metadata":{"required":["createdBy","createdByUserId","createdDate","etag","lastModifiedBy","lastModifiedByUserId","lastModifiedDate","state"],"description":"The resource metadata.","type":"object","readOnly":true,"properties":{"createdBy":{"description":"The user who created the resource.","type":"string"},"createdByUserId":{"description":"The ID of the user who created the resource.","type":"string"},"createdDate":{"format":"date-time","description":"The date the resource was created.","type":"string"},"etag":{"description":"The resource etag.","type":"string"},"lastModifiedBy":{"description":"The last user who modified the resource.","type":"string"},"lastModifiedByUserId":{"description":"The ID of the last user who modified the resource.","type":"string"},"lastModifiedDate":{"format":"date-time","description":"The date the resource was last modified.","type":"string"},"state":{"$ref":"#/components/schemas/MetadataState"}}},"MetadataState":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."},"GroupProperties":{"type":"object","required":["datacenter","location"],"properties":{"datacenter":{"type":"object","required":["id"],"description":"The VMs for this VM Auto Scaling Description are created in this virtual data center.","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":false},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}},"location":{"description":"The data center location.","type":"string","readOnly":true},"maxReplicaCount":{"format":"int64","description":"The maximum value for the number of replicas. Must be >= 0 and <= 100. Will be enforced for both automatic and manual changes.","maximum":100,"minimum":0,"type":"integer"},"minReplicaCount":{"format":"int64","description":"The minimum value for the number of replicas. Must be >= 0 and <= 100. Will be enforced for both automatic and manual changes","maximum":100,"minimum":0,"type":"integer"},"name":{"description":"The name of the VM Auto Scaling Group. This field must not be null or blank.","maxLength":255,"type":"string"},"policy":{"$ref":"#/components/schemas/GroupPolicy"},"replicaConfiguration":{"$ref":"#/components/schemas/ReplicaPropertiesPost"}}},"GroupPolicy":{"required":["metric","scaleInAction","scaleInThreshold","scaleOutAction","scaleOutThreshold","unit"],"type":"object","description":"Defines the behavior of this VM Auto Scaling Group. A policy consists of triggers and actions, where an action is an automated behavior, and the trigger defines the circumstances under which the action is triggered. Currently, two separate actions are supported, namely scaling inward and outward, triggered by the thresholds defined for a particular metric.","properties":{"metric":{"$ref":"#/components/schemas/Metric"},"range":{"format":"duration","description":"Specifies the time range for which the samples are to be aggregated. Must be >= 2 minutes.","type":"string","default":"120s"},"scaleInAction":{"$ref":"#/components/schemas/GroupPolicyScaleInAction"},"scaleInThreshold":{"description":"The lower threshold for the value of the 'metric'. Used with the `less than` (<) operator. When this value is exceeded, a scale-in action is triggered, specified by the 'scaleInAction' property. The value must have a higher minimum delta to the 'scaleOutThreshold', depending on the 'metric', to avoid competing for actions at the same time.","type":"number"},"scaleOutAction":{"$ref":"#/components/schemas/GroupPolicyScaleOutAction"},"scaleOutThreshold":{"description":"The upper threshold for the value of the 'metric'. Used with the 'greater than' (>) operator. A scale-out action is triggered when this value is exceeded, specified by the 'scaleOutAction' property. The value must have a lower minimum delta to the 'scaleInThreshold', depending on the metric, to avoid competing for actions simultaneously. If 'properties.policy.unit=TOTAL', a value >= 40 must be chosen.","type":"number"},"unit":{"$ref":"#/components/schemas/QueryUnit"}}},"Metric":{"enum":["INSTANCE_CPU_UTILIZATION_AVERAGE","INSTANCE_NETWORK_IN_BYTES","INSTANCE_NETWORK_IN_PACKETS","INSTANCE_NETWORK_OUT_BYTES","INSTANCE_NETWORK_OUT_PACKETS"],"type":"string","description":"The metric that triggers the scaling actions. Metric values are checked at fixed intervals."},"GroupPolicyScaleInAction":{"required":["amount","amountType","deleteVolumes"],"type":"object","description":"Defines the action to be taken when the 'scaleInThreshold' is exceeded. Here, scaling is always about removing VMs associated with this VM Auto Scaling Group. By default, the termination policy is 'OLDEST_SERVER_FIRST' is effective.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the next scaling action is started. With a scaling action in progress, no second scaling action is started for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum value of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"},"terminationPolicy":{"$ref":"#/components/schemas/TerminationPolicyType"},"deleteVolumes":{"description":"If set to `true`, when deleting an replica during scale in, any attached volume will also be deleted. When set to `false`, all volumes remain in the datacenter and must be deleted manually.\n\n**Note**, that every scale-out creates new volumes. When they are not deleted, they will eventually use all of your contracts resource limits. At this point, scaling out would not be possible anymore.","type":"boolean"}}},"ActionAmount":{"enum":["ABSOLUTE","PERCENTAGE"],"type":"string","description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to\nthe current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200."},"TerminationPolicyType":{"enum":["OLDEST_SERVER_FIRST","NEWEST_SERVER_FIRST","RANDOM"],"type":"string","description":"The type of termination policy for the VM Auto Scaling Group to follow a specific pattern for scaling-in replicas. The default termination policy is 'OLDEST_SERVER_FIRST'."},"GroupPolicyScaleOutAction":{"required":["amount","amountType"],"type":"object","description":"Defines the action to be performed when the 'scaleOutThreshold' is exceeded. Here, scaling is always about adding new VMs to this VM Auto Scaling Group.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the following scaling action is started. While a scaling action is in progress, no second action is initiated for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"}}},"QueryUnit":{"enum":["PER_HOUR","PER_MINUTE","PER_SECOND","TOTAL"],"type":"string","default":"TOTAL","description":"The units of the applied metric. 'TOTAL' can only be combined with 'INSTANCE_CPU_UTILIZATION_AVERAGE'."},"ReplicaPropertiesPost":{"required":["cores","ram"],"type":"object","properties":{"availabilityZone":{"$ref":"#/components/schemas/AvailabilityZone"},"cores":{"format":"int32","description":"The total number of cores for the VMs.","minimum":1,"type":"integer"},"cpuFamily":{"$ref":"#/components/schemas/CpuFamily"},"nics":{"description":"The list of NICs associated with this replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaNic"}},"ram":{"format":"int32","description":"The size of the memory for the VMs in MB. The size must be in multiples of 256 MB, with a minimum of 256 MB; if you set 'ramHotPlug=TRUE', you must use at least 1024 MB. If you set the RAM size to more than 240 GB, 'ramHotPlug=FALSE' is fixed.","type":"integer"},"volumes":{"description":"List of volumes associated with this Replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaVolumePost"}}}},"AvailabilityZone":{"enum":["AUTO"],"type":"string","description":"The zone where the VMs are created. The availability zone is always automatically set to 'AUTO' for performance reasons. Even if you set another value, e.g. 'null', or leave it empty."},"CpuFamily":{"enum":["INTEL_SIERRAFOREST","INTEL_ICELAKE","AMD_OPTERON","INTEL_SKYLAKE","INTEL_XEON"],"type":"string","description":"The CPU family for the VMs created with this configuration. If the value is 'null', the VM is created with the default CPU family for the assigned site."},"ReplicaNic":{"type":"object","required":["lan","name"],"properties":{"lan":{"format":"int32","description":"The LAN ID of this replica NIC.","minimum":1,"type":"integer"},"name":{"description":"The replica NIC name.","maxLength":255,"type":"string"},"dhcp":{"description":"DHCP for this replica NIC. This is an optional attribute with the default value 'TRUE' if not specified in the request payload or as null.","type":"boolean"},"firewallActive":{"description":"Activate or deactivate the firewall. By default, an active firewall without any defined rules will block all incoming network traffic except for the firewall rules that explicitly allows certain protocols, IP addresses and ports.","type":"boolean"},"firewallType":{"description":"The type of firewall rules that will be allowed on the NIC. If not specified, the default INGRESS value is used.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"flowLogs":{"description":"List of all flow logs for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFlowLog"}},"firewallRules":{"description":"List of all firewall rules for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFirewallRule"}},"targetGroup":{"$ref":"#/components/schemas/TargetGroup"}}},"NicFlowLog":{"required":["name","action","direction","bucket"],"type":"object","properties":{"name":{"description":"The flow log name.","type":"string"},"action":{"description":"Specifies the traffic action pattern.","enum":["ACCEPTED","REJECTED","ALL"],"type":"string"},"direction":{"description":"Specifies the traffic direction pattern.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"bucket":{"description":"The S3 bucket name of an existing IONOS CLOUD S3 bucket.","type":"string"}}},"NicFirewallRule":{"required":["protocol"],"type":"object","properties":{"name":{"description":"The name of the firewall rule.","type":"string"},"protocol":{"description":"The protocol for the rule. The property cannot be modified after its creation (not allowed in update requests).","enum":["TCP","UDP","ICMP","ANY"],"type":"string"},"sourceMac":{"description":"Only traffic originating from the respective MAC address is permitted. Valid format: 'aa:bb:cc:dd:ee:ff'. The value 'null' allows traffic from any MAC address.","pattern":"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$","type":"string"},"sourceIp":{"description":"Only traffic originating from the respective IPv4 address is permitted. The value 'null' allows traffic from any IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"targetIp":{"description":"If the target NIC has multiple IP addresses, only the traffic directed to the respective IP address of the NIC is allowed. The value 'null' allows traffic to any target IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"icmpCode":{"description":"Sets the allowed code (from 0 to 254) when ICMP protocol is selected. The value 'null'' allows all codes.","type":"integer","minimum":0,"maximum":254},"icmpType":{"description":"Sets the allowed type (from 0 to 254) if the protocol ICMP is selected. The value 'null' allows all types.","type":"integer","minimum":0,"maximum":254},"portRangeStart":{"description":"Sets the initial range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"portRangeEnd":{"description":"Sets the end range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"type":{"description":"The firewall rule type. If not specified, the default value 'INGRESS' is used.","enum":["INGRESS","EGRESS"],"type":"string"}}},"TargetGroup":{"description":"In order to link VM to ALB, target group must be provided","type":"object","required":["targetGroupId","port","weight"],"properties":{"targetGroupId":{"description":"id","type":"string"},"port":{"description":"port","type":"integer"},"weight":{"description":"weight","type":"integer"}}},"ReplicaVolumePost":{"required":["type","name","size","bootOrder"],"type":"object","properties":{"image":{"format":"uuid","description":"The image installed on the disk. Currently, only the UUID of the image is supported.\n\n>Note that either 'image' or 'imageAlias' must be specified, but not both.","pattern":"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}","type":"string"},"imageAlias":{"description":"The image installed on the volume. Must be an 'imageAlias' as specified via the images API. Note that one of 'image' or 'imageAlias' must be set, but not both.","type":"string"},"name":{"description":"The replica volume name.","maxLength":255,"type":"string"},"size":{"format":"int32","description":"The size of this replica volume in GB.","minimum":1,"type":"integer"},"sshKeys":{"description":"The SSH keys of this volume.","type":"array","items":{"type":"string"}},"type":{"$ref":"#/components/schemas/VolumeHwType"},"userData":{"description":"The user data (Cloud Init) for this replica volume.","type":"string"},"bus":{"$ref":"#/components/schemas/BusType"},"backupunitId":{"description":"The ID of the backup unit that the user has access to. The property is immutable and is only allowed to be set on creation of a new a volume. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.","type":"string"},"bootOrder":{"description":"Determines whether the volume will be used as a boot volume. Set to NONE, the volume will not be used as boot volume. Set to PRIMARY, the volume will be used as boot volume and set to AUTO will delegate the decision to the provisioning engine to decide whether to use the voluem as boot volume. Notice that exactly one volume can be set to PRIMARY or all of them set to AUTO.","type":"string","enum":["AUTO","NONE","PRIMARY"]},"imagePassword":{"description":"The image password for this replica volume.","type":"string"}}},"VolumeHwType":{"enum":["HDD","SSD","SSD_PREMIUM","SSD_STANDARD","ESSENTIAL","BALANCED","PERFORMANCE"],"type":"string","description":"The storage type of this replica volume. `ESSENTIAL`, `BALANCED`, and `PERFORMANCE` are the current performance classes (formerly HDD, SSD_STANDARD, and SSD_PREMIUM respectively); the legacy names remain valid but are deprecated."},"BusType":{"enum":["VIRTIO","IDE"],"type":"string","default":"VIRTIO","description":"The bus type of the volume. Default setting is 'VIRTIO'. The bus type 'IDE' is also supported."},"ActionsLinkResource":{"type":"object","required":["id"],"description":"The scaling actions of the specified VM Auto Scaling Group.","readOnly":true,"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}},"ServersLinkResource":{"type":"object","required":["id"],"description":"The servers linked to the VM Auto Scaling Group.","readOnly":true,"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}},"ActionResource":{"type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}}}}}
```

## The GroupPut object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"GroupPut":{"description":"The update request for a VM Auto Scaling Group.","type":"object","required":["properties"],"properties":{"properties":{"type":"object","required":["datacenter","location","maxReplicaCount","minReplicaCount","name","policy","replicaConfiguration"],"properties":{"datacenter":{"type":"object","required":["id"],"description":"The VMs for this VM Auto Scaling Group are created in this virtual data center.","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":false},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}},"location":{"description":"The data center location.","type":"string","readOnly":true},"maxReplicaCount":{"format":"int64","description":"The maximum value for the number of replicas on a VM Auto Scaling Group. Must be >= 0 and <= 200. Will be enforced for both automatic and manual changes.","maximum":200,"minimum":0,"type":"integer"},"minReplicaCount":{"format":"int64","description":"The minimum value for the number of replicas on a VM Auto Scaling Group. Must be >= 0 and <= 200. Will be enforced for both automatic and manual changes","maximum":200,"minimum":0,"type":"integer"},"name":{"description":"The name of the VM Auto Scaling Group. This field must not be null or blank.","maxLength":255,"type":"string"},"policy":{"$ref":"#/components/schemas/GroupPolicy"},"replicaConfiguration":{"$ref":"#/components/schemas/ReplicaPropertiesPost"}}}}},"GroupPolicy":{"required":["metric","scaleInAction","scaleInThreshold","scaleOutAction","scaleOutThreshold","unit"],"type":"object","description":"Defines the behavior of this VM Auto Scaling Group. A policy consists of triggers and actions, where an action is an automated behavior, and the trigger defines the circumstances under which the action is triggered. Currently, two separate actions are supported, namely scaling inward and outward, triggered by the thresholds defined for a particular metric.","properties":{"metric":{"$ref":"#/components/schemas/Metric"},"range":{"format":"duration","description":"Specifies the time range for which the samples are to be aggregated. Must be >= 2 minutes.","type":"string","default":"120s"},"scaleInAction":{"$ref":"#/components/schemas/GroupPolicyScaleInAction"},"scaleInThreshold":{"description":"The lower threshold for the value of the 'metric'. Used with the `less than` (<) operator. When this value is exceeded, a scale-in action is triggered, specified by the 'scaleInAction' property. The value must have a higher minimum delta to the 'scaleOutThreshold', depending on the 'metric', to avoid competing for actions at the same time.","type":"number"},"scaleOutAction":{"$ref":"#/components/schemas/GroupPolicyScaleOutAction"},"scaleOutThreshold":{"description":"The upper threshold for the value of the 'metric'. Used with the 'greater than' (>) operator. A scale-out action is triggered when this value is exceeded, specified by the 'scaleOutAction' property. The value must have a lower minimum delta to the 'scaleInThreshold', depending on the metric, to avoid competing for actions simultaneously. If 'properties.policy.unit=TOTAL', a value >= 40 must be chosen.","type":"number"},"unit":{"$ref":"#/components/schemas/QueryUnit"}}},"Metric":{"enum":["INSTANCE_CPU_UTILIZATION_AVERAGE","INSTANCE_NETWORK_IN_BYTES","INSTANCE_NETWORK_IN_PACKETS","INSTANCE_NETWORK_OUT_BYTES","INSTANCE_NETWORK_OUT_PACKETS"],"type":"string","description":"The metric that triggers the scaling actions. Metric values are checked at fixed intervals."},"GroupPolicyScaleInAction":{"required":["amount","amountType","deleteVolumes"],"type":"object","description":"Defines the action to be taken when the 'scaleInThreshold' is exceeded. Here, scaling is always about removing VMs associated with this VM Auto Scaling Group. By default, the termination policy is 'OLDEST_SERVER_FIRST' is effective.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the next scaling action is started. With a scaling action in progress, no second scaling action is started for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum value of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"},"terminationPolicy":{"$ref":"#/components/schemas/TerminationPolicyType"},"deleteVolumes":{"description":"If set to `true`, when deleting an replica during scale in, any attached volume will also be deleted. When set to `false`, all volumes remain in the datacenter and must be deleted manually.\n\n**Note**, that every scale-out creates new volumes. When they are not deleted, they will eventually use all of your contracts resource limits. At this point, scaling out would not be possible anymore.","type":"boolean"}}},"ActionAmount":{"enum":["ABSOLUTE","PERCENTAGE"],"type":"string","description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to\nthe current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200."},"TerminationPolicyType":{"enum":["OLDEST_SERVER_FIRST","NEWEST_SERVER_FIRST","RANDOM"],"type":"string","description":"The type of termination policy for the VM Auto Scaling Group to follow a specific pattern for scaling-in replicas. The default termination policy is 'OLDEST_SERVER_FIRST'."},"GroupPolicyScaleOutAction":{"required":["amount","amountType"],"type":"object","description":"Defines the action to be performed when the 'scaleOutThreshold' is exceeded. Here, scaling is always about adding new VMs to this VM Auto Scaling Group.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the following scaling action is started. While a scaling action is in progress, no second action is initiated for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"}}},"QueryUnit":{"enum":["PER_HOUR","PER_MINUTE","PER_SECOND","TOTAL"],"type":"string","default":"TOTAL","description":"The units of the applied metric. 'TOTAL' can only be combined with 'INSTANCE_CPU_UTILIZATION_AVERAGE'."},"ReplicaPropertiesPost":{"required":["cores","ram"],"type":"object","properties":{"availabilityZone":{"$ref":"#/components/schemas/AvailabilityZone"},"cores":{"format":"int32","description":"The total number of cores for the VMs.","minimum":1,"type":"integer"},"cpuFamily":{"$ref":"#/components/schemas/CpuFamily"},"nics":{"description":"The list of NICs associated with this replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaNic"}},"ram":{"format":"int32","description":"The size of the memory for the VMs in MB. The size must be in multiples of 256 MB, with a minimum of 256 MB; if you set 'ramHotPlug=TRUE', you must use at least 1024 MB. If you set the RAM size to more than 240 GB, 'ramHotPlug=FALSE' is fixed.","type":"integer"},"volumes":{"description":"List of volumes associated with this Replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaVolumePost"}}}},"AvailabilityZone":{"enum":["AUTO"],"type":"string","description":"The zone where the VMs are created. The availability zone is always automatically set to 'AUTO' for performance reasons. Even if you set another value, e.g. 'null', or leave it empty."},"CpuFamily":{"enum":["INTEL_SIERRAFOREST","INTEL_ICELAKE","AMD_OPTERON","INTEL_SKYLAKE","INTEL_XEON"],"type":"string","description":"The CPU family for the VMs created with this configuration. If the value is 'null', the VM is created with the default CPU family for the assigned site."},"ReplicaNic":{"type":"object","required":["lan","name"],"properties":{"lan":{"format":"int32","description":"The LAN ID of this replica NIC.","minimum":1,"type":"integer"},"name":{"description":"The replica NIC name.","maxLength":255,"type":"string"},"dhcp":{"description":"DHCP for this replica NIC. This is an optional attribute with the default value 'TRUE' if not specified in the request payload or as null.","type":"boolean"},"firewallActive":{"description":"Activate or deactivate the firewall. By default, an active firewall without any defined rules will block all incoming network traffic except for the firewall rules that explicitly allows certain protocols, IP addresses and ports.","type":"boolean"},"firewallType":{"description":"The type of firewall rules that will be allowed on the NIC. If not specified, the default INGRESS value is used.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"flowLogs":{"description":"List of all flow logs for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFlowLog"}},"firewallRules":{"description":"List of all firewall rules for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFirewallRule"}},"targetGroup":{"$ref":"#/components/schemas/TargetGroup"}}},"NicFlowLog":{"required":["name","action","direction","bucket"],"type":"object","properties":{"name":{"description":"The flow log name.","type":"string"},"action":{"description":"Specifies the traffic action pattern.","enum":["ACCEPTED","REJECTED","ALL"],"type":"string"},"direction":{"description":"Specifies the traffic direction pattern.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"bucket":{"description":"The S3 bucket name of an existing IONOS CLOUD S3 bucket.","type":"string"}}},"NicFirewallRule":{"required":["protocol"],"type":"object","properties":{"name":{"description":"The name of the firewall rule.","type":"string"},"protocol":{"description":"The protocol for the rule. The property cannot be modified after its creation (not allowed in update requests).","enum":["TCP","UDP","ICMP","ANY"],"type":"string"},"sourceMac":{"description":"Only traffic originating from the respective MAC address is permitted. Valid format: 'aa:bb:cc:dd:ee:ff'. The value 'null' allows traffic from any MAC address.","pattern":"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$","type":"string"},"sourceIp":{"description":"Only traffic originating from the respective IPv4 address is permitted. The value 'null' allows traffic from any IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"targetIp":{"description":"If the target NIC has multiple IP addresses, only the traffic directed to the respective IP address of the NIC is allowed. The value 'null' allows traffic to any target IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"icmpCode":{"description":"Sets the allowed code (from 0 to 254) when ICMP protocol is selected. The value 'null'' allows all codes.","type":"integer","minimum":0,"maximum":254},"icmpType":{"description":"Sets the allowed type (from 0 to 254) if the protocol ICMP is selected. The value 'null' allows all types.","type":"integer","minimum":0,"maximum":254},"portRangeStart":{"description":"Sets the initial range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"portRangeEnd":{"description":"Sets the end range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"type":{"description":"The firewall rule type. If not specified, the default value 'INGRESS' is used.","enum":["INGRESS","EGRESS"],"type":"string"}}},"TargetGroup":{"description":"In order to link VM to ALB, target group must be provided","type":"object","required":["targetGroupId","port","weight"],"properties":{"targetGroupId":{"description":"id","type":"string"},"port":{"description":"port","type":"integer"},"weight":{"description":"weight","type":"integer"}}},"ReplicaVolumePost":{"required":["type","name","size","bootOrder"],"type":"object","properties":{"image":{"format":"uuid","description":"The image installed on the disk. Currently, only the UUID of the image is supported.\n\n>Note that either 'image' or 'imageAlias' must be specified, but not both.","pattern":"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}","type":"string"},"imageAlias":{"description":"The image installed on the volume. Must be an 'imageAlias' as specified via the images API. Note that one of 'image' or 'imageAlias' must be set, but not both.","type":"string"},"name":{"description":"The replica volume name.","maxLength":255,"type":"string"},"size":{"format":"int32","description":"The size of this replica volume in GB.","minimum":1,"type":"integer"},"sshKeys":{"description":"The SSH keys of this volume.","type":"array","items":{"type":"string"}},"type":{"$ref":"#/components/schemas/VolumeHwType"},"userData":{"description":"The user data (Cloud Init) for this replica volume.","type":"string"},"bus":{"$ref":"#/components/schemas/BusType"},"backupunitId":{"description":"The ID of the backup unit that the user has access to. The property is immutable and is only allowed to be set on creation of a new a volume. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.","type":"string"},"bootOrder":{"description":"Determines whether the volume will be used as a boot volume. Set to NONE, the volume will not be used as boot volume. Set to PRIMARY, the volume will be used as boot volume and set to AUTO will delegate the decision to the provisioning engine to decide whether to use the voluem as boot volume. Notice that exactly one volume can be set to PRIMARY or all of them set to AUTO.","type":"string","enum":["AUTO","NONE","PRIMARY"]},"imagePassword":{"description":"The image password for this replica volume.","type":"string"}}},"VolumeHwType":{"enum":["HDD","SSD","SSD_PREMIUM","SSD_STANDARD","ESSENTIAL","BALANCED","PERFORMANCE"],"type":"string","description":"The storage type of this replica volume. `ESSENTIAL`, `BALANCED`, and `PERFORMANCE` are the current performance classes (formerly HDD, SSD_STANDARD, and SSD_PREMIUM respectively); the legacy names remain valid but are deprecated."},"BusType":{"enum":["VIRTIO","IDE"],"type":"string","default":"VIRTIO","description":"The bus type of the volume. Default setting is 'VIRTIO'. The bus type 'IDE' is also supported."}}}}
```

## The GroupCollection object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"GroupCollection":{"type":"object","required":["id"],"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"items":{"type":"array","items":{"$ref":"#/components/schemas/Group"}}}},"Group":{"description":"A group of virtual servers where the number of replicas can be scaled automatically.","required":["properties","id"],"type":"object","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"metadata":{"$ref":"#/components/schemas/Metadata"},"properties":{"$ref":"#/components/schemas/GroupProperties"},"entities":{"description":"The entities associated with this resource. The content depends on the resource type.","type":"object","readOnly":true,"properties":{"actions":{"$ref":"#/components/schemas/ActionCollection"},"servers":{"$ref":"#/components/schemas/ServerCollection"}}}}},"Metadata":{"required":["createdBy","createdByUserId","createdDate","etag","lastModifiedBy","lastModifiedByUserId","lastModifiedDate","state"],"description":"The resource metadata.","type":"object","readOnly":true,"properties":{"createdBy":{"description":"The user who created the resource.","type":"string"},"createdByUserId":{"description":"The ID of the user who created the resource.","type":"string"},"createdDate":{"format":"date-time","description":"The date the resource was created.","type":"string"},"etag":{"description":"The resource etag.","type":"string"},"lastModifiedBy":{"description":"The last user who modified the resource.","type":"string"},"lastModifiedByUserId":{"description":"The ID of the last user who modified the resource.","type":"string"},"lastModifiedDate":{"format":"date-time","description":"The date the resource was last modified.","type":"string"},"state":{"$ref":"#/components/schemas/MetadataState"}}},"MetadataState":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."},"GroupProperties":{"type":"object","required":["datacenter","location"],"properties":{"datacenter":{"type":"object","required":["id"],"description":"The VMs for this VM Auto Scaling Description are created in this virtual data center.","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":false},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}},"location":{"description":"The data center location.","type":"string","readOnly":true},"maxReplicaCount":{"format":"int64","description":"The maximum value for the number of replicas. Must be >= 0 and <= 100. Will be enforced for both automatic and manual changes.","maximum":100,"minimum":0,"type":"integer"},"minReplicaCount":{"format":"int64","description":"The minimum value for the number of replicas. Must be >= 0 and <= 100. Will be enforced for both automatic and manual changes","maximum":100,"minimum":0,"type":"integer"},"name":{"description":"The name of the VM Auto Scaling Group. This field must not be null or blank.","maxLength":255,"type":"string"},"policy":{"$ref":"#/components/schemas/GroupPolicy"},"replicaConfiguration":{"$ref":"#/components/schemas/ReplicaPropertiesPost"}}},"GroupPolicy":{"required":["metric","scaleInAction","scaleInThreshold","scaleOutAction","scaleOutThreshold","unit"],"type":"object","description":"Defines the behavior of this VM Auto Scaling Group. A policy consists of triggers and actions, where an action is an automated behavior, and the trigger defines the circumstances under which the action is triggered. Currently, two separate actions are supported, namely scaling inward and outward, triggered by the thresholds defined for a particular metric.","properties":{"metric":{"$ref":"#/components/schemas/Metric"},"range":{"format":"duration","description":"Specifies the time range for which the samples are to be aggregated. Must be >= 2 minutes.","type":"string","default":"120s"},"scaleInAction":{"$ref":"#/components/schemas/GroupPolicyScaleInAction"},"scaleInThreshold":{"description":"The lower threshold for the value of the 'metric'. Used with the `less than` (<) operator. When this value is exceeded, a scale-in action is triggered, specified by the 'scaleInAction' property. The value must have a higher minimum delta to the 'scaleOutThreshold', depending on the 'metric', to avoid competing for actions at the same time.","type":"number"},"scaleOutAction":{"$ref":"#/components/schemas/GroupPolicyScaleOutAction"},"scaleOutThreshold":{"description":"The upper threshold for the value of the 'metric'. Used with the 'greater than' (>) operator. A scale-out action is triggered when this value is exceeded, specified by the 'scaleOutAction' property. The value must have a lower minimum delta to the 'scaleInThreshold', depending on the metric, to avoid competing for actions simultaneously. If 'properties.policy.unit=TOTAL', a value >= 40 must be chosen.","type":"number"},"unit":{"$ref":"#/components/schemas/QueryUnit"}}},"Metric":{"enum":["INSTANCE_CPU_UTILIZATION_AVERAGE","INSTANCE_NETWORK_IN_BYTES","INSTANCE_NETWORK_IN_PACKETS","INSTANCE_NETWORK_OUT_BYTES","INSTANCE_NETWORK_OUT_PACKETS"],"type":"string","description":"The metric that triggers the scaling actions. Metric values are checked at fixed intervals."},"GroupPolicyScaleInAction":{"required":["amount","amountType","deleteVolumes"],"type":"object","description":"Defines the action to be taken when the 'scaleInThreshold' is exceeded. Here, scaling is always about removing VMs associated with this VM Auto Scaling Group. By default, the termination policy is 'OLDEST_SERVER_FIRST' is effective.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the next scaling action is started. With a scaling action in progress, no second scaling action is started for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum value of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"},"terminationPolicy":{"$ref":"#/components/schemas/TerminationPolicyType"},"deleteVolumes":{"description":"If set to `true`, when deleting an replica during scale in, any attached volume will also be deleted. When set to `false`, all volumes remain in the datacenter and must be deleted manually.\n\n**Note**, that every scale-out creates new volumes. When they are not deleted, they will eventually use all of your contracts resource limits. At this point, scaling out would not be possible anymore.","type":"boolean"}}},"ActionAmount":{"enum":["ABSOLUTE","PERCENTAGE"],"type":"string","description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to\nthe current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200."},"TerminationPolicyType":{"enum":["OLDEST_SERVER_FIRST","NEWEST_SERVER_FIRST","RANDOM"],"type":"string","description":"The type of termination policy for the VM Auto Scaling Group to follow a specific pattern for scaling-in replicas. The default termination policy is 'OLDEST_SERVER_FIRST'."},"GroupPolicyScaleOutAction":{"required":["amount","amountType"],"type":"object","description":"Defines the action to be performed when the 'scaleOutThreshold' is exceeded. Here, scaling is always about adding new VMs to this VM Auto Scaling Group.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the following scaling action is started. While a scaling action is in progress, no second action is initiated for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"}}},"QueryUnit":{"enum":["PER_HOUR","PER_MINUTE","PER_SECOND","TOTAL"],"type":"string","default":"TOTAL","description":"The units of the applied metric. 'TOTAL' can only be combined with 'INSTANCE_CPU_UTILIZATION_AVERAGE'."},"ReplicaPropertiesPost":{"required":["cores","ram"],"type":"object","properties":{"availabilityZone":{"$ref":"#/components/schemas/AvailabilityZone"},"cores":{"format":"int32","description":"The total number of cores for the VMs.","minimum":1,"type":"integer"},"cpuFamily":{"$ref":"#/components/schemas/CpuFamily"},"nics":{"description":"The list of NICs associated with this replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaNic"}},"ram":{"format":"int32","description":"The size of the memory for the VMs in MB. The size must be in multiples of 256 MB, with a minimum of 256 MB; if you set 'ramHotPlug=TRUE', you must use at least 1024 MB. If you set the RAM size to more than 240 GB, 'ramHotPlug=FALSE' is fixed.","type":"integer"},"volumes":{"description":"List of volumes associated with this Replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaVolumePost"}}}},"AvailabilityZone":{"enum":["AUTO"],"type":"string","description":"The zone where the VMs are created. The availability zone is always automatically set to 'AUTO' for performance reasons. Even if you set another value, e.g. 'null', or leave it empty."},"CpuFamily":{"enum":["INTEL_SIERRAFOREST","INTEL_ICELAKE","AMD_OPTERON","INTEL_SKYLAKE","INTEL_XEON"],"type":"string","description":"The CPU family for the VMs created with this configuration. If the value is 'null', the VM is created with the default CPU family for the assigned site."},"ReplicaNic":{"type":"object","required":["lan","name"],"properties":{"lan":{"format":"int32","description":"The LAN ID of this replica NIC.","minimum":1,"type":"integer"},"name":{"description":"The replica NIC name.","maxLength":255,"type":"string"},"dhcp":{"description":"DHCP for this replica NIC. This is an optional attribute with the default value 'TRUE' if not specified in the request payload or as null.","type":"boolean"},"firewallActive":{"description":"Activate or deactivate the firewall. By default, an active firewall without any defined rules will block all incoming network traffic except for the firewall rules that explicitly allows certain protocols, IP addresses and ports.","type":"boolean"},"firewallType":{"description":"The type of firewall rules that will be allowed on the NIC. If not specified, the default INGRESS value is used.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"flowLogs":{"description":"List of all flow logs for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFlowLog"}},"firewallRules":{"description":"List of all firewall rules for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFirewallRule"}},"targetGroup":{"$ref":"#/components/schemas/TargetGroup"}}},"NicFlowLog":{"required":["name","action","direction","bucket"],"type":"object","properties":{"name":{"description":"The flow log name.","type":"string"},"action":{"description":"Specifies the traffic action pattern.","enum":["ACCEPTED","REJECTED","ALL"],"type":"string"},"direction":{"description":"Specifies the traffic direction pattern.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"bucket":{"description":"The S3 bucket name of an existing IONOS CLOUD S3 bucket.","type":"string"}}},"NicFirewallRule":{"required":["protocol"],"type":"object","properties":{"name":{"description":"The name of the firewall rule.","type":"string"},"protocol":{"description":"The protocol for the rule. The property cannot be modified after its creation (not allowed in update requests).","enum":["TCP","UDP","ICMP","ANY"],"type":"string"},"sourceMac":{"description":"Only traffic originating from the respective MAC address is permitted. Valid format: 'aa:bb:cc:dd:ee:ff'. The value 'null' allows traffic from any MAC address.","pattern":"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$","type":"string"},"sourceIp":{"description":"Only traffic originating from the respective IPv4 address is permitted. The value 'null' allows traffic from any IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"targetIp":{"description":"If the target NIC has multiple IP addresses, only the traffic directed to the respective IP address of the NIC is allowed. The value 'null' allows traffic to any target IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"icmpCode":{"description":"Sets the allowed code (from 0 to 254) when ICMP protocol is selected. The value 'null'' allows all codes.","type":"integer","minimum":0,"maximum":254},"icmpType":{"description":"Sets the allowed type (from 0 to 254) if the protocol ICMP is selected. The value 'null' allows all types.","type":"integer","minimum":0,"maximum":254},"portRangeStart":{"description":"Sets the initial range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"portRangeEnd":{"description":"Sets the end range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"type":{"description":"The firewall rule type. If not specified, the default value 'INGRESS' is used.","enum":["INGRESS","EGRESS"],"type":"string"}}},"TargetGroup":{"description":"In order to link VM to ALB, target group must be provided","type":"object","required":["targetGroupId","port","weight"],"properties":{"targetGroupId":{"description":"id","type":"string"},"port":{"description":"port","type":"integer"},"weight":{"description":"weight","type":"integer"}}},"ReplicaVolumePost":{"required":["type","name","size","bootOrder"],"type":"object","properties":{"image":{"format":"uuid","description":"The image installed on the disk. Currently, only the UUID of the image is supported.\n\n>Note that either 'image' or 'imageAlias' must be specified, but not both.","pattern":"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}","type":"string"},"imageAlias":{"description":"The image installed on the volume. Must be an 'imageAlias' as specified via the images API. Note that one of 'image' or 'imageAlias' must be set, but not both.","type":"string"},"name":{"description":"The replica volume name.","maxLength":255,"type":"string"},"size":{"format":"int32","description":"The size of this replica volume in GB.","minimum":1,"type":"integer"},"sshKeys":{"description":"The SSH keys of this volume.","type":"array","items":{"type":"string"}},"type":{"$ref":"#/components/schemas/VolumeHwType"},"userData":{"description":"The user data (Cloud Init) for this replica volume.","type":"string"},"bus":{"$ref":"#/components/schemas/BusType"},"backupunitId":{"description":"The ID of the backup unit that the user has access to. The property is immutable and is only allowed to be set on creation of a new a volume. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.","type":"string"},"bootOrder":{"description":"Determines whether the volume will be used as a boot volume. Set to NONE, the volume will not be used as boot volume. Set to PRIMARY, the volume will be used as boot volume and set to AUTO will delegate the decision to the provisioning engine to decide whether to use the voluem as boot volume. Notice that exactly one volume can be set to PRIMARY or all of them set to AUTO.","type":"string","enum":["AUTO","NONE","PRIMARY"]},"imagePassword":{"description":"The image password for this replica volume.","type":"string"}}},"VolumeHwType":{"enum":["HDD","SSD","SSD_PREMIUM","SSD_STANDARD","ESSENTIAL","BALANCED","PERFORMANCE"],"type":"string","description":"The storage type of this replica volume. `ESSENTIAL`, `BALANCED`, and `PERFORMANCE` are the current performance classes (formerly HDD, SSD_STANDARD, and SSD_PREMIUM respectively); the legacy names remain valid but are deprecated."},"BusType":{"enum":["VIRTIO","IDE"],"type":"string","default":"VIRTIO","description":"The bus type of the volume. Default setting is 'VIRTIO'. The bus type 'IDE' is also supported."},"ActionCollection":{"type":"object","required":["id"],"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"items":{"items":{"$ref":"#/components/schemas/Action"}}}},"Action":{"description":"The scaling action associated with a VM Auto Scaling Group.","type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"metadata":{"$ref":"#/components/schemas/MetadataBasic"},"properties":{"$ref":"#/components/schemas/ActionProperties"}}},"MetadataBasic":{"required":["createdDate","etag","lastModifiedDate","state"],"description":"The resource metadata.","type":"object","readOnly":true,"properties":{"createdDate":{"format":"date-time","description":"The date the resource was created.","type":"string"},"etag":{"description":"The resource etag.","type":"string"},"lastModifiedDate":{"format":"date-time","description":"The date the resource was last modified.","type":"string"},"state":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."}}},"ActionProperties":{"required":["actionStatus","actionType"],"description":"The properties of the resource; the content depends on the resource type.","type":"object","properties":{"actionStatus":{"$ref":"#/components/schemas/ActionStatus"},"actionType":{"$ref":"#/components/schemas/ActionType"}}},"ActionStatus":{"enum":["FAILED","IN_PROGRESS","SUCCESSFUL"],"type":"string","readOnly":true},"ActionType":{"description":"The type of scaling action. A 'SCALE_IN' action deletes servers until the group has at most the number of servers. A 'SCALE_OUT' action creates servers until the group has at least the servers.","enum":["SCALE_IN","SCALE_OUT"],"type":"string"},"ServerCollection":{"type":"object","required":["id"],"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"items":{"items":{"$ref":"#/components/schemas/Server"}}}},"Server":{"type":"object","required":["id"],"description":"Links a data center server to an autoAuto Scaling scaling group. Note that this entities UUID is different from that of the data center server, whose UUID is stored in the `datacenterServer` property.","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"metadata":{"$ref":"#/components/schemas/MetadataBasic"},"properties":{"$ref":"#/components/schemas/ServerProperties"}}},"ServerProperties":{"required":["datacenterServer"],"type":"object","properties":{"datacenterServer":{"$ref":"#/components/schemas/DatacenterServer"},"name":{"type":"string"}}},"DatacenterServer":{"type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}}}}}
```

## The GroupPolicy object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"GroupPolicy":{"required":["metric","scaleInAction","scaleInThreshold","scaleOutAction","scaleOutThreshold","unit"],"type":"object","description":"Defines the behavior of this VM Auto Scaling Group. A policy consists of triggers and actions, where an action is an automated behavior, and the trigger defines the circumstances under which the action is triggered. Currently, two separate actions are supported, namely scaling inward and outward, triggered by the thresholds defined for a particular metric.","properties":{"metric":{"$ref":"#/components/schemas/Metric"},"range":{"format":"duration","description":"Specifies the time range for which the samples are to be aggregated. Must be >= 2 minutes.","type":"string","default":"120s"},"scaleInAction":{"$ref":"#/components/schemas/GroupPolicyScaleInAction"},"scaleInThreshold":{"description":"The lower threshold for the value of the 'metric'. Used with the `less than` (<) operator. When this value is exceeded, a scale-in action is triggered, specified by the 'scaleInAction' property. The value must have a higher minimum delta to the 'scaleOutThreshold', depending on the 'metric', to avoid competing for actions at the same time.","type":"number"},"scaleOutAction":{"$ref":"#/components/schemas/GroupPolicyScaleOutAction"},"scaleOutThreshold":{"description":"The upper threshold for the value of the 'metric'. Used with the 'greater than' (>) operator. A scale-out action is triggered when this value is exceeded, specified by the 'scaleOutAction' property. The value must have a lower minimum delta to the 'scaleInThreshold', depending on the metric, to avoid competing for actions simultaneously. If 'properties.policy.unit=TOTAL', a value >= 40 must be chosen.","type":"number"},"unit":{"$ref":"#/components/schemas/QueryUnit"}}},"Metric":{"enum":["INSTANCE_CPU_UTILIZATION_AVERAGE","INSTANCE_NETWORK_IN_BYTES","INSTANCE_NETWORK_IN_PACKETS","INSTANCE_NETWORK_OUT_BYTES","INSTANCE_NETWORK_OUT_PACKETS"],"type":"string","description":"The metric that triggers the scaling actions. Metric values are checked at fixed intervals."},"GroupPolicyScaleInAction":{"required":["amount","amountType","deleteVolumes"],"type":"object","description":"Defines the action to be taken when the 'scaleInThreshold' is exceeded. Here, scaling is always about removing VMs associated with this VM Auto Scaling Group. By default, the termination policy is 'OLDEST_SERVER_FIRST' is effective.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the next scaling action is started. With a scaling action in progress, no second scaling action is started for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum value of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"},"terminationPolicy":{"$ref":"#/components/schemas/TerminationPolicyType"},"deleteVolumes":{"description":"If set to `true`, when deleting an replica during scale in, any attached volume will also be deleted. When set to `false`, all volumes remain in the datacenter and must be deleted manually.\n\n**Note**, that every scale-out creates new volumes. When they are not deleted, they will eventually use all of your contracts resource limits. At this point, scaling out would not be possible anymore.","type":"boolean"}}},"ActionAmount":{"enum":["ABSOLUTE","PERCENTAGE"],"type":"string","description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to\nthe current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200."},"TerminationPolicyType":{"enum":["OLDEST_SERVER_FIRST","NEWEST_SERVER_FIRST","RANDOM"],"type":"string","description":"The type of termination policy for the VM Auto Scaling Group to follow a specific pattern for scaling-in replicas. The default termination policy is 'OLDEST_SERVER_FIRST'."},"GroupPolicyScaleOutAction":{"required":["amount","amountType"],"type":"object","description":"Defines the action to be performed when the 'scaleOutThreshold' is exceeded. Here, scaling is always about adding new VMs to this VM Auto Scaling Group.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the following scaling action is started. While a scaling action is in progress, no second action is initiated for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"}}},"QueryUnit":{"enum":["PER_HOUR","PER_MINUTE","PER_SECOND","TOTAL"],"type":"string","default":"TOTAL","description":"The units of the applied metric. 'TOTAL' can only be combined with 'INSTANCE_CPU_UTILIZATION_AVERAGE'."}}}}
```

## The GroupPolicyScaleInAction object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"GroupPolicyScaleInAction":{"required":["amount","amountType","deleteVolumes"],"type":"object","description":"Defines the action to be taken when the 'scaleInThreshold' is exceeded. Here, scaling is always about removing VMs associated with this VM Auto Scaling Group. By default, the termination policy is 'OLDEST_SERVER_FIRST' is effective.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the next scaling action is started. With a scaling action in progress, no second scaling action is started for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum value of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"},"terminationPolicy":{"$ref":"#/components/schemas/TerminationPolicyType"},"deleteVolumes":{"description":"If set to `true`, when deleting an replica during scale in, any attached volume will also be deleted. When set to `false`, all volumes remain in the datacenter and must be deleted manually.\n\n**Note**, that every scale-out creates new volumes. When they are not deleted, they will eventually use all of your contracts resource limits. At this point, scaling out would not be possible anymore.","type":"boolean"}}},"ActionAmount":{"enum":["ABSOLUTE","PERCENTAGE"],"type":"string","description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to\nthe current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200."},"TerminationPolicyType":{"enum":["OLDEST_SERVER_FIRST","NEWEST_SERVER_FIRST","RANDOM"],"type":"string","description":"The type of termination policy for the VM Auto Scaling Group to follow a specific pattern for scaling-in replicas. The default termination policy is 'OLDEST_SERVER_FIRST'."}}}}
```

## The TerminationPolicyType object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"TerminationPolicyType":{"enum":["OLDEST_SERVER_FIRST","NEWEST_SERVER_FIRST","RANDOM"],"type":"string","description":"The type of termination policy for the VM Auto Scaling Group to follow a specific pattern for scaling-in replicas. The default termination policy is 'OLDEST_SERVER_FIRST'."}}}}
```

## The GroupPolicyScaleOutAction object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"GroupPolicyScaleOutAction":{"required":["amount","amountType"],"type":"object","description":"Defines the action to be performed when the 'scaleOutThreshold' is exceeded. Here, scaling is always about adding new VMs to this VM Auto Scaling Group.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the following scaling action is started. While a scaling action is in progress, no second action is initiated for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"}}},"ActionAmount":{"enum":["ABSOLUTE","PERCENTAGE"],"type":"string","description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to\nthe current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200."}}}}
```

## The GroupProperties object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"GroupProperties":{"type":"object","required":["datacenter","location"],"properties":{"datacenter":{"type":"object","required":["id"],"description":"The VMs for this VM Auto Scaling Description are created in this virtual data center.","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":false},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}},"location":{"description":"The data center location.","type":"string","readOnly":true},"maxReplicaCount":{"format":"int64","description":"The maximum value for the number of replicas. Must be >= 0 and <= 100. Will be enforced for both automatic and manual changes.","maximum":100,"minimum":0,"type":"integer"},"minReplicaCount":{"format":"int64","description":"The minimum value for the number of replicas. Must be >= 0 and <= 100. Will be enforced for both automatic and manual changes","maximum":100,"minimum":0,"type":"integer"},"name":{"description":"The name of the VM Auto Scaling Group. This field must not be null or blank.","maxLength":255,"type":"string"},"policy":{"$ref":"#/components/schemas/GroupPolicy"},"replicaConfiguration":{"$ref":"#/components/schemas/ReplicaPropertiesPost"}}},"GroupPolicy":{"required":["metric","scaleInAction","scaleInThreshold","scaleOutAction","scaleOutThreshold","unit"],"type":"object","description":"Defines the behavior of this VM Auto Scaling Group. A policy consists of triggers and actions, where an action is an automated behavior, and the trigger defines the circumstances under which the action is triggered. Currently, two separate actions are supported, namely scaling inward and outward, triggered by the thresholds defined for a particular metric.","properties":{"metric":{"$ref":"#/components/schemas/Metric"},"range":{"format":"duration","description":"Specifies the time range for which the samples are to be aggregated. Must be >= 2 minutes.","type":"string","default":"120s"},"scaleInAction":{"$ref":"#/components/schemas/GroupPolicyScaleInAction"},"scaleInThreshold":{"description":"The lower threshold for the value of the 'metric'. Used with the `less than` (<) operator. When this value is exceeded, a scale-in action is triggered, specified by the 'scaleInAction' property. The value must have a higher minimum delta to the 'scaleOutThreshold', depending on the 'metric', to avoid competing for actions at the same time.","type":"number"},"scaleOutAction":{"$ref":"#/components/schemas/GroupPolicyScaleOutAction"},"scaleOutThreshold":{"description":"The upper threshold for the value of the 'metric'. Used with the 'greater than' (>) operator. A scale-out action is triggered when this value is exceeded, specified by the 'scaleOutAction' property. The value must have a lower minimum delta to the 'scaleInThreshold', depending on the metric, to avoid competing for actions simultaneously. If 'properties.policy.unit=TOTAL', a value >= 40 must be chosen.","type":"number"},"unit":{"$ref":"#/components/schemas/QueryUnit"}}},"Metric":{"enum":["INSTANCE_CPU_UTILIZATION_AVERAGE","INSTANCE_NETWORK_IN_BYTES","INSTANCE_NETWORK_IN_PACKETS","INSTANCE_NETWORK_OUT_BYTES","INSTANCE_NETWORK_OUT_PACKETS"],"type":"string","description":"The metric that triggers the scaling actions. Metric values are checked at fixed intervals."},"GroupPolicyScaleInAction":{"required":["amount","amountType","deleteVolumes"],"type":"object","description":"Defines the action to be taken when the 'scaleInThreshold' is exceeded. Here, scaling is always about removing VMs associated with this VM Auto Scaling Group. By default, the termination policy is 'OLDEST_SERVER_FIRST' is effective.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the next scaling action is started. With a scaling action in progress, no second scaling action is started for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum value of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"},"terminationPolicy":{"$ref":"#/components/schemas/TerminationPolicyType"},"deleteVolumes":{"description":"If set to `true`, when deleting an replica during scale in, any attached volume will also be deleted. When set to `false`, all volumes remain in the datacenter and must be deleted manually.\n\n**Note**, that every scale-out creates new volumes. When they are not deleted, they will eventually use all of your contracts resource limits. At this point, scaling out would not be possible anymore.","type":"boolean"}}},"ActionAmount":{"enum":["ABSOLUTE","PERCENTAGE"],"type":"string","description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to\nthe current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200."},"TerminationPolicyType":{"enum":["OLDEST_SERVER_FIRST","NEWEST_SERVER_FIRST","RANDOM"],"type":"string","description":"The type of termination policy for the VM Auto Scaling Group to follow a specific pattern for scaling-in replicas. The default termination policy is 'OLDEST_SERVER_FIRST'."},"GroupPolicyScaleOutAction":{"required":["amount","amountType"],"type":"object","description":"Defines the action to be performed when the 'scaleOutThreshold' is exceeded. Here, scaling is always about adding new VMs to this VM Auto Scaling Group.","properties":{"amount":{"description":"'amountType=ABSOLUTE' specifies the absolute number of VMs that are added or removed. The value must be between 1 to 10.\n\n 'amountType=PERCENTAGE' specifies the percentage value that is applied to the current number of replicas of the VM Auto Scaling Group. The value must be between 1 to 200.\n\n At least one VM is always added or removed. \n\nNote that for 'SCALE_IN' operations, volumes are not deleted after the server is deleted.","type":"number"},"amountType":{"$ref":"#/components/schemas/ActionAmount"},"cooldownPeriod":{"format":"duration","description":"The minimum time that elapses after the start of this scaling action until the following scaling action is started. While a scaling action is in progress, no second action is initiated for the same VM Auto Scaling Group. Instead, the metric is re-evaluated after the current scaling action completes (either successfully or with errors). This is currently validated with a minimum value of 2 minutes and a maximum of 24 hours. The default value is 5 minutes if not specified.","type":"string","default":"5m"}}},"QueryUnit":{"enum":["PER_HOUR","PER_MINUTE","PER_SECOND","TOTAL"],"type":"string","default":"TOTAL","description":"The units of the applied metric. 'TOTAL' can only be combined with 'INSTANCE_CPU_UTILIZATION_AVERAGE'."},"ReplicaPropertiesPost":{"required":["cores","ram"],"type":"object","properties":{"availabilityZone":{"$ref":"#/components/schemas/AvailabilityZone"},"cores":{"format":"int32","description":"The total number of cores for the VMs.","minimum":1,"type":"integer"},"cpuFamily":{"$ref":"#/components/schemas/CpuFamily"},"nics":{"description":"The list of NICs associated with this replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaNic"}},"ram":{"format":"int32","description":"The size of the memory for the VMs in MB. The size must be in multiples of 256 MB, with a minimum of 256 MB; if you set 'ramHotPlug=TRUE', you must use at least 1024 MB. If you set the RAM size to more than 240 GB, 'ramHotPlug=FALSE' is fixed.","type":"integer"},"volumes":{"description":"List of volumes associated with this Replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaVolumePost"}}}},"AvailabilityZone":{"enum":["AUTO"],"type":"string","description":"The zone where the VMs are created. The availability zone is always automatically set to 'AUTO' for performance reasons. Even if you set another value, e.g. 'null', or leave it empty."},"CpuFamily":{"enum":["INTEL_SIERRAFOREST","INTEL_ICELAKE","AMD_OPTERON","INTEL_SKYLAKE","INTEL_XEON"],"type":"string","description":"The CPU family for the VMs created with this configuration. If the value is 'null', the VM is created with the default CPU family for the assigned site."},"ReplicaNic":{"type":"object","required":["lan","name"],"properties":{"lan":{"format":"int32","description":"The LAN ID of this replica NIC.","minimum":1,"type":"integer"},"name":{"description":"The replica NIC name.","maxLength":255,"type":"string"},"dhcp":{"description":"DHCP for this replica NIC. This is an optional attribute with the default value 'TRUE' if not specified in the request payload or as null.","type":"boolean"},"firewallActive":{"description":"Activate or deactivate the firewall. By default, an active firewall without any defined rules will block all incoming network traffic except for the firewall rules that explicitly allows certain protocols, IP addresses and ports.","type":"boolean"},"firewallType":{"description":"The type of firewall rules that will be allowed on the NIC. If not specified, the default INGRESS value is used.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"flowLogs":{"description":"List of all flow logs for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFlowLog"}},"firewallRules":{"description":"List of all firewall rules for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFirewallRule"}},"targetGroup":{"$ref":"#/components/schemas/TargetGroup"}}},"NicFlowLog":{"required":["name","action","direction","bucket"],"type":"object","properties":{"name":{"description":"The flow log name.","type":"string"},"action":{"description":"Specifies the traffic action pattern.","enum":["ACCEPTED","REJECTED","ALL"],"type":"string"},"direction":{"description":"Specifies the traffic direction pattern.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"bucket":{"description":"The S3 bucket name of an existing IONOS CLOUD S3 bucket.","type":"string"}}},"NicFirewallRule":{"required":["protocol"],"type":"object","properties":{"name":{"description":"The name of the firewall rule.","type":"string"},"protocol":{"description":"The protocol for the rule. The property cannot be modified after its creation (not allowed in update requests).","enum":["TCP","UDP","ICMP","ANY"],"type":"string"},"sourceMac":{"description":"Only traffic originating from the respective MAC address is permitted. Valid format: 'aa:bb:cc:dd:ee:ff'. The value 'null' allows traffic from any MAC address.","pattern":"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$","type":"string"},"sourceIp":{"description":"Only traffic originating from the respective IPv4 address is permitted. The value 'null' allows traffic from any IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"targetIp":{"description":"If the target NIC has multiple IP addresses, only the traffic directed to the respective IP address of the NIC is allowed. The value 'null' allows traffic to any target IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"icmpCode":{"description":"Sets the allowed code (from 0 to 254) when ICMP protocol is selected. The value 'null'' allows all codes.","type":"integer","minimum":0,"maximum":254},"icmpType":{"description":"Sets the allowed type (from 0 to 254) if the protocol ICMP is selected. The value 'null' allows all types.","type":"integer","minimum":0,"maximum":254},"portRangeStart":{"description":"Sets the initial range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"portRangeEnd":{"description":"Sets the end range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"type":{"description":"The firewall rule type. If not specified, the default value 'INGRESS' is used.","enum":["INGRESS","EGRESS"],"type":"string"}}},"TargetGroup":{"description":"In order to link VM to ALB, target group must be provided","type":"object","required":["targetGroupId","port","weight"],"properties":{"targetGroupId":{"description":"id","type":"string"},"port":{"description":"port","type":"integer"},"weight":{"description":"weight","type":"integer"}}},"ReplicaVolumePost":{"required":["type","name","size","bootOrder"],"type":"object","properties":{"image":{"format":"uuid","description":"The image installed on the disk. Currently, only the UUID of the image is supported.\n\n>Note that either 'image' or 'imageAlias' must be specified, but not both.","pattern":"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}","type":"string"},"imageAlias":{"description":"The image installed on the volume. Must be an 'imageAlias' as specified via the images API. Note that one of 'image' or 'imageAlias' must be set, but not both.","type":"string"},"name":{"description":"The replica volume name.","maxLength":255,"type":"string"},"size":{"format":"int32","description":"The size of this replica volume in GB.","minimum":1,"type":"integer"},"sshKeys":{"description":"The SSH keys of this volume.","type":"array","items":{"type":"string"}},"type":{"$ref":"#/components/schemas/VolumeHwType"},"userData":{"description":"The user data (Cloud Init) for this replica volume.","type":"string"},"bus":{"$ref":"#/components/schemas/BusType"},"backupunitId":{"description":"The ID of the backup unit that the user has access to. The property is immutable and is only allowed to be set on creation of a new a volume. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.","type":"string"},"bootOrder":{"description":"Determines whether the volume will be used as a boot volume. Set to NONE, the volume will not be used as boot volume. Set to PRIMARY, the volume will be used as boot volume and set to AUTO will delegate the decision to the provisioning engine to decide whether to use the voluem as boot volume. Notice that exactly one volume can be set to PRIMARY or all of them set to AUTO.","type":"string","enum":["AUTO","NONE","PRIMARY"]},"imagePassword":{"description":"The image password for this replica volume.","type":"string"}}},"VolumeHwType":{"enum":["HDD","SSD","SSD_PREMIUM","SSD_STANDARD","ESSENTIAL","BALANCED","PERFORMANCE"],"type":"string","description":"The storage type of this replica volume. `ESSENTIAL`, `BALANCED`, and `PERFORMANCE` are the current performance classes (formerly HDD, SSD_STANDARD, and SSD_PREMIUM respectively); the legacy names remain valid but are deprecated."},"BusType":{"enum":["VIRTIO","IDE"],"type":"string","default":"VIRTIO","description":"The bus type of the volume. Default setting is 'VIRTIO'. The bus type 'IDE' is also supported."}}}}
```

## The Metadata object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"Metadata":{"required":["createdBy","createdByUserId","createdDate","etag","lastModifiedBy","lastModifiedByUserId","lastModifiedDate","state"],"description":"The resource metadata.","type":"object","readOnly":true,"properties":{"createdBy":{"description":"The user who created the resource.","type":"string"},"createdByUserId":{"description":"The ID of the user who created the resource.","type":"string"},"createdDate":{"format":"date-time","description":"The date the resource was created.","type":"string"},"etag":{"description":"The resource etag.","type":"string"},"lastModifiedBy":{"description":"The last user who modified the resource.","type":"string"},"lastModifiedByUserId":{"description":"The ID of the last user who modified the resource.","type":"string"},"lastModifiedDate":{"format":"date-time","description":"The date the resource was last modified.","type":"string"},"state":{"$ref":"#/components/schemas/MetadataState"}}},"MetadataState":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."}}}}
```

## The MetadataBasic object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"MetadataBasic":{"required":["createdDate","etag","lastModifiedDate","state"],"description":"The resource metadata.","type":"object","readOnly":true,"properties":{"createdDate":{"format":"date-time","description":"The date the resource was created.","type":"string"},"etag":{"description":"The resource etag.","type":"string"},"lastModifiedDate":{"format":"date-time","description":"The date the resource was last modified.","type":"string"},"state":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."}}}}}}
```

## The MetadataState object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"MetadataState":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."}}}}
```

## The Metric object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"Metric":{"enum":["INSTANCE_CPU_UTILIZATION_AVERAGE","INSTANCE_NETWORK_IN_BYTES","INSTANCE_NETWORK_IN_PACKETS","INSTANCE_NETWORK_OUT_BYTES","INSTANCE_NETWORK_OUT_PACKETS"],"type":"string","description":"The metric that triggers the scaling actions. Metric values are checked at fixed intervals."}}}}
```

## The QueryUnit object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"QueryUnit":{"enum":["PER_HOUR","PER_MINUTE","PER_SECOND","TOTAL"],"type":"string","default":"TOTAL","description":"The units of the applied metric. 'TOTAL' can only be combined with 'INSTANCE_CPU_UTILIZATION_AVERAGE'."}}}}
```

## The ActionResource object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ActionResource":{"type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}}}}}
```

## The ActionsLinkResource object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ActionsLinkResource":{"type":"object","required":["id"],"description":"The scaling actions of the specified VM Auto Scaling Group.","readOnly":true,"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}}}}}
```

## The ServersLinkResource object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ServersLinkResource":{"type":"object","required":["id"],"description":"The servers linked to the VM Auto Scaling Group.","readOnly":true,"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}}}}}
```

## The GroupResource object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"GroupResource":{"type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}}}}}
```

## The Server object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"Server":{"type":"object","required":["id"],"description":"Links a data center server to an autoAuto Scaling scaling group. Note that this entities UUID is different from that of the data center server, whose UUID is stored in the `datacenterServer` property.","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"metadata":{"$ref":"#/components/schemas/MetadataBasic"},"properties":{"$ref":"#/components/schemas/ServerProperties"}}},"MetadataBasic":{"required":["createdDate","etag","lastModifiedDate","state"],"description":"The resource metadata.","type":"object","readOnly":true,"properties":{"createdDate":{"format":"date-time","description":"The date the resource was created.","type":"string"},"etag":{"description":"The resource etag.","type":"string"},"lastModifiedDate":{"format":"date-time","description":"The date the resource was last modified.","type":"string"},"state":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."}}},"ServerProperties":{"required":["datacenterServer"],"type":"object","properties":{"datacenterServer":{"$ref":"#/components/schemas/DatacenterServer"},"name":{"type":"string"}}},"DatacenterServer":{"type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}}}}}
```

## The ServerCollection object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ServerCollection":{"type":"object","required":["id"],"properties":{"id":{"description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"items":{"items":{"$ref":"#/components/schemas/Server"}}}},"Server":{"type":"object","required":["id"],"description":"Links a data center server to an autoAuto Scaling scaling group. Note that this entities UUID is different from that of the data center server, whose UUID is stored in the `datacenterServer` property.","properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true},"metadata":{"$ref":"#/components/schemas/MetadataBasic"},"properties":{"$ref":"#/components/schemas/ServerProperties"}}},"MetadataBasic":{"required":["createdDate","etag","lastModifiedDate","state"],"description":"The resource metadata.","type":"object","readOnly":true,"properties":{"createdDate":{"format":"date-time","description":"The date the resource was created.","type":"string"},"etag":{"description":"The resource etag.","type":"string"},"lastModifiedDate":{"format":"date-time","description":"The date the resource was last modified.","type":"string"},"state":{"enum":["AVAILABLE","BUSY","INACTIVE","SUSPENDED"],"type":"string","description":"The resource state."}}},"ServerProperties":{"required":["datacenterServer"],"type":"object","properties":{"datacenterServer":{"$ref":"#/components/schemas/DatacenterServer"},"name":{"type":"string"}}},"DatacenterServer":{"type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}}}}}
```

## The ServerProperties object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ServerProperties":{"required":["datacenterServer"],"type":"object","properties":{"datacenterServer":{"$ref":"#/components/schemas/DatacenterServer"},"name":{"type":"string"}}},"DatacenterServer":{"type":"object","required":["id"],"properties":{"id":{"format":"uuid","description":"The unique resource identifier.","type":"string","readOnly":true},"type":{"description":"The resource type.","type":"string","readOnly":true},"href":{"format":"uri","description":"The absolute URL to the resource's representation.","type":"string","readOnly":true}}}}}}
```

## The ReplicaNic object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ReplicaNic":{"type":"object","required":["lan","name"],"properties":{"lan":{"format":"int32","description":"The LAN ID of this replica NIC.","minimum":1,"type":"integer"},"name":{"description":"The replica NIC name.","maxLength":255,"type":"string"},"dhcp":{"description":"DHCP for this replica NIC. This is an optional attribute with the default value 'TRUE' if not specified in the request payload or as null.","type":"boolean"},"firewallActive":{"description":"Activate or deactivate the firewall. By default, an active firewall without any defined rules will block all incoming network traffic except for the firewall rules that explicitly allows certain protocols, IP addresses and ports.","type":"boolean"},"firewallType":{"description":"The type of firewall rules that will be allowed on the NIC. If not specified, the default INGRESS value is used.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"flowLogs":{"description":"List of all flow logs for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFlowLog"}},"firewallRules":{"description":"List of all firewall rules for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFirewallRule"}},"targetGroup":{"$ref":"#/components/schemas/TargetGroup"}}},"NicFlowLog":{"required":["name","action","direction","bucket"],"type":"object","properties":{"name":{"description":"The flow log name.","type":"string"},"action":{"description":"Specifies the traffic action pattern.","enum":["ACCEPTED","REJECTED","ALL"],"type":"string"},"direction":{"description":"Specifies the traffic direction pattern.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"bucket":{"description":"The S3 bucket name of an existing IONOS CLOUD S3 bucket.","type":"string"}}},"NicFirewallRule":{"required":["protocol"],"type":"object","properties":{"name":{"description":"The name of the firewall rule.","type":"string"},"protocol":{"description":"The protocol for the rule. The property cannot be modified after its creation (not allowed in update requests).","enum":["TCP","UDP","ICMP","ANY"],"type":"string"},"sourceMac":{"description":"Only traffic originating from the respective MAC address is permitted. Valid format: 'aa:bb:cc:dd:ee:ff'. The value 'null' allows traffic from any MAC address.","pattern":"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$","type":"string"},"sourceIp":{"description":"Only traffic originating from the respective IPv4 address is permitted. The value 'null' allows traffic from any IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"targetIp":{"description":"If the target NIC has multiple IP addresses, only the traffic directed to the respective IP address of the NIC is allowed. The value 'null' allows traffic to any target IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"icmpCode":{"description":"Sets the allowed code (from 0 to 254) when ICMP protocol is selected. The value 'null'' allows all codes.","type":"integer","minimum":0,"maximum":254},"icmpType":{"description":"Sets the allowed type (from 0 to 254) if the protocol ICMP is selected. The value 'null' allows all types.","type":"integer","minimum":0,"maximum":254},"portRangeStart":{"description":"Sets the initial range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"portRangeEnd":{"description":"Sets the end range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"type":{"description":"The firewall rule type. If not specified, the default value 'INGRESS' is used.","enum":["INGRESS","EGRESS"],"type":"string"}}},"TargetGroup":{"description":"In order to link VM to ALB, target group must be provided","type":"object","required":["targetGroupId","port","weight"],"properties":{"targetGroupId":{"description":"id","type":"string"},"port":{"description":"port","type":"integer"},"weight":{"description":"weight","type":"integer"}}}}}}
```

## The NicFlowLog object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"NicFlowLog":{"required":["name","action","direction","bucket"],"type":"object","properties":{"name":{"description":"The flow log name.","type":"string"},"action":{"description":"Specifies the traffic action pattern.","enum":["ACCEPTED","REJECTED","ALL"],"type":"string"},"direction":{"description":"Specifies the traffic direction pattern.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"bucket":{"description":"The S3 bucket name of an existing IONOS CLOUD S3 bucket.","type":"string"}}}}}}
```

## The NicFirewallRule object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"NicFirewallRule":{"required":["protocol"],"type":"object","properties":{"name":{"description":"The name of the firewall rule.","type":"string"},"protocol":{"description":"The protocol for the rule. The property cannot be modified after its creation (not allowed in update requests).","enum":["TCP","UDP","ICMP","ANY"],"type":"string"},"sourceMac":{"description":"Only traffic originating from the respective MAC address is permitted. Valid format: 'aa:bb:cc:dd:ee:ff'. The value 'null' allows traffic from any MAC address.","pattern":"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$","type":"string"},"sourceIp":{"description":"Only traffic originating from the respective IPv4 address is permitted. The value 'null' allows traffic from any IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"targetIp":{"description":"If the target NIC has multiple IP addresses, only the traffic directed to the respective IP address of the NIC is allowed. The value 'null' allows traffic to any target IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"icmpCode":{"description":"Sets the allowed code (from 0 to 254) when ICMP protocol is selected. The value 'null'' allows all codes.","type":"integer","minimum":0,"maximum":254},"icmpType":{"description":"Sets the allowed type (from 0 to 254) if the protocol ICMP is selected. The value 'null' allows all types.","type":"integer","minimum":0,"maximum":254},"portRangeStart":{"description":"Sets the initial range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"portRangeEnd":{"description":"Sets the end range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"type":{"description":"The firewall rule type. If not specified, the default value 'INGRESS' is used.","enum":["INGRESS","EGRESS"],"type":"string"}}}}}}
```

## The TargetGroup object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"TargetGroup":{"description":"In order to link VM to ALB, target group must be provided","type":"object","required":["targetGroupId","port","weight"],"properties":{"targetGroupId":{"description":"id","type":"string"},"port":{"description":"port","type":"integer"},"weight":{"description":"weight","type":"integer"}}}}}}
```

## The ReplicaPropertiesPost object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ReplicaPropertiesPost":{"required":["cores","ram"],"type":"object","properties":{"availabilityZone":{"$ref":"#/components/schemas/AvailabilityZone"},"cores":{"format":"int32","description":"The total number of cores for the VMs.","minimum":1,"type":"integer"},"cpuFamily":{"$ref":"#/components/schemas/CpuFamily"},"nics":{"description":"The list of NICs associated with this replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaNic"}},"ram":{"format":"int32","description":"The size of the memory for the VMs in MB. The size must be in multiples of 256 MB, with a minimum of 256 MB; if you set 'ramHotPlug=TRUE', you must use at least 1024 MB. If you set the RAM size to more than 240 GB, 'ramHotPlug=FALSE' is fixed.","type":"integer"},"volumes":{"description":"List of volumes associated with this Replica.","type":"array","items":{"$ref":"#/components/schemas/ReplicaVolumePost"}}}},"AvailabilityZone":{"enum":["AUTO"],"type":"string","description":"The zone where the VMs are created. The availability zone is always automatically set to 'AUTO' for performance reasons. Even if you set another value, e.g. 'null', or leave it empty."},"CpuFamily":{"enum":["INTEL_SIERRAFOREST","INTEL_ICELAKE","AMD_OPTERON","INTEL_SKYLAKE","INTEL_XEON"],"type":"string","description":"The CPU family for the VMs created with this configuration. If the value is 'null', the VM is created with the default CPU family for the assigned site."},"ReplicaNic":{"type":"object","required":["lan","name"],"properties":{"lan":{"format":"int32","description":"The LAN ID of this replica NIC.","minimum":1,"type":"integer"},"name":{"description":"The replica NIC name.","maxLength":255,"type":"string"},"dhcp":{"description":"DHCP for this replica NIC. This is an optional attribute with the default value 'TRUE' if not specified in the request payload or as null.","type":"boolean"},"firewallActive":{"description":"Activate or deactivate the firewall. By default, an active firewall without any defined rules will block all incoming network traffic except for the firewall rules that explicitly allows certain protocols, IP addresses and ports.","type":"boolean"},"firewallType":{"description":"The type of firewall rules that will be allowed on the NIC. If not specified, the default INGRESS value is used.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"flowLogs":{"description":"List of all flow logs for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFlowLog"}},"firewallRules":{"description":"List of all firewall rules for the specified NIC.","type":"array","items":{"$ref":"#/components/schemas/NicFirewallRule"}},"targetGroup":{"$ref":"#/components/schemas/TargetGroup"}}},"NicFlowLog":{"required":["name","action","direction","bucket"],"type":"object","properties":{"name":{"description":"The flow log name.","type":"string"},"action":{"description":"Specifies the traffic action pattern.","enum":["ACCEPTED","REJECTED","ALL"],"type":"string"},"direction":{"description":"Specifies the traffic direction pattern.","enum":["INGRESS","EGRESS","BIDIRECTIONAL"],"type":"string"},"bucket":{"description":"The S3 bucket name of an existing IONOS CLOUD S3 bucket.","type":"string"}}},"NicFirewallRule":{"required":["protocol"],"type":"object","properties":{"name":{"description":"The name of the firewall rule.","type":"string"},"protocol":{"description":"The protocol for the rule. The property cannot be modified after its creation (not allowed in update requests).","enum":["TCP","UDP","ICMP","ANY"],"type":"string"},"sourceMac":{"description":"Only traffic originating from the respective MAC address is permitted. Valid format: 'aa:bb:cc:dd:ee:ff'. The value 'null' allows traffic from any MAC address.","pattern":"^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$","type":"string"},"sourceIp":{"description":"Only traffic originating from the respective IPv4 address is permitted. The value 'null' allows traffic from any IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"targetIp":{"description":"If the target NIC has multiple IP addresses, only the traffic directed to the respective IP address of the NIC is allowed. The value 'null' allows traffic to any target IP address.","pattern":"^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$","type":"string"},"icmpCode":{"description":"Sets the allowed code (from 0 to 254) when ICMP protocol is selected. The value 'null'' allows all codes.","type":"integer","minimum":0,"maximum":254},"icmpType":{"description":"Sets the allowed type (from 0 to 254) if the protocol ICMP is selected. The value 'null' allows all types.","type":"integer","minimum":0,"maximum":254},"portRangeStart":{"description":"Sets the initial range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"portRangeEnd":{"description":"Sets the end range of the allowed port (from 1 to 65535) if the protocol TCP or UDP is selected. The value 'null' for 'portRangeStart' and 'portRangeEnd' allows all ports.","type":"integer","minimum":1,"maximum":65535},"type":{"description":"The firewall rule type. If not specified, the default value 'INGRESS' is used.","enum":["INGRESS","EGRESS"],"type":"string"}}},"TargetGroup":{"description":"In order to link VM to ALB, target group must be provided","type":"object","required":["targetGroupId","port","weight"],"properties":{"targetGroupId":{"description":"id","type":"string"},"port":{"description":"port","type":"integer"},"weight":{"description":"weight","type":"integer"}}},"ReplicaVolumePost":{"required":["type","name","size","bootOrder"],"type":"object","properties":{"image":{"format":"uuid","description":"The image installed on the disk. Currently, only the UUID of the image is supported.\n\n>Note that either 'image' or 'imageAlias' must be specified, but not both.","pattern":"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}","type":"string"},"imageAlias":{"description":"The image installed on the volume. Must be an 'imageAlias' as specified via the images API. Note that one of 'image' or 'imageAlias' must be set, but not both.","type":"string"},"name":{"description":"The replica volume name.","maxLength":255,"type":"string"},"size":{"format":"int32","description":"The size of this replica volume in GB.","minimum":1,"type":"integer"},"sshKeys":{"description":"The SSH keys of this volume.","type":"array","items":{"type":"string"}},"type":{"$ref":"#/components/schemas/VolumeHwType"},"userData":{"description":"The user data (Cloud Init) for this replica volume.","type":"string"},"bus":{"$ref":"#/components/schemas/BusType"},"backupunitId":{"description":"The ID of the backup unit that the user has access to. The property is immutable and is only allowed to be set on creation of a new a volume. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.","type":"string"},"bootOrder":{"description":"Determines whether the volume will be used as a boot volume. Set to NONE, the volume will not be used as boot volume. Set to PRIMARY, the volume will be used as boot volume and set to AUTO will delegate the decision to the provisioning engine to decide whether to use the voluem as boot volume. Notice that exactly one volume can be set to PRIMARY or all of them set to AUTO.","type":"string","enum":["AUTO","NONE","PRIMARY"]},"imagePassword":{"description":"The image password for this replica volume.","type":"string"}}},"VolumeHwType":{"enum":["HDD","SSD","SSD_PREMIUM","SSD_STANDARD","ESSENTIAL","BALANCED","PERFORMANCE"],"type":"string","description":"The storage type of this replica volume. `ESSENTIAL`, `BALANCED`, and `PERFORMANCE` are the current performance classes (formerly HDD, SSD_STANDARD, and SSD_PREMIUM respectively); the legacy names remain valid but are deprecated."},"BusType":{"enum":["VIRTIO","IDE"],"type":"string","default":"VIRTIO","description":"The bus type of the volume. Default setting is 'VIRTIO'. The bus type 'IDE' is also supported."}}}}
```

## The ReplicaVolumePost object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"ReplicaVolumePost":{"required":["type","name","size","bootOrder"],"type":"object","properties":{"image":{"format":"uuid","description":"The image installed on the disk. Currently, only the UUID of the image is supported.\n\n>Note that either 'image' or 'imageAlias' must be specified, but not both.","pattern":"[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}","type":"string"},"imageAlias":{"description":"The image installed on the volume. Must be an 'imageAlias' as specified via the images API. Note that one of 'image' or 'imageAlias' must be set, but not both.","type":"string"},"name":{"description":"The replica volume name.","maxLength":255,"type":"string"},"size":{"format":"int32","description":"The size of this replica volume in GB.","minimum":1,"type":"integer"},"sshKeys":{"description":"The SSH keys of this volume.","type":"array","items":{"type":"string"}},"type":{"$ref":"#/components/schemas/VolumeHwType"},"userData":{"description":"The user data (Cloud Init) for this replica volume.","type":"string"},"bus":{"$ref":"#/components/schemas/BusType"},"backupunitId":{"description":"The ID of the backup unit that the user has access to. The property is immutable and is only allowed to be set on creation of a new a volume. It is mandatory to provide either 'public image' or 'imageAlias' in conjunction with this property.","type":"string"},"bootOrder":{"description":"Determines whether the volume will be used as a boot volume. Set to NONE, the volume will not be used as boot volume. Set to PRIMARY, the volume will be used as boot volume and set to AUTO will delegate the decision to the provisioning engine to decide whether to use the voluem as boot volume. Notice that exactly one volume can be set to PRIMARY or all of them set to AUTO.","type":"string","enum":["AUTO","NONE","PRIMARY"]},"imagePassword":{"description":"The image password for this replica volume.","type":"string"}}},"VolumeHwType":{"enum":["HDD","SSD","SSD_PREMIUM","SSD_STANDARD","ESSENTIAL","BALANCED","PERFORMANCE"],"type":"string","description":"The storage type of this replica volume. `ESSENTIAL`, `BALANCED`, and `PERFORMANCE` are the current performance classes (formerly HDD, SSD_STANDARD, and SSD_PREMIUM respectively); the legacy names remain valid but are deprecated."},"BusType":{"enum":["VIRTIO","IDE"],"type":"string","default":"VIRTIO","description":"The bus type of the volume. Default setting is 'VIRTIO'. The bus type 'IDE' is also supported."}}}}
```

## The VolumeHwType object

```json
{"openapi":"3.0.3","info":{"title":"VM Auto Scaling API","version":"1.0.0"},"components":{"schemas":{"VolumeHwType":{"enum":["HDD","SSD","SSD_PREMIUM","SSD_STANDARD","ESSENTIAL","BALANCED","PERFORMANCE"],"type":"string","description":"The storage type of this replica volume. `ESSENTIAL`, `BALANCED`, and `PERFORMANCE` are the current performance classes (formerly HDD, SSD_STANDARD, and SSD_PREMIUM respectively); the legacy names remain valid but are deprecated."}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.ionos.com/cloud/api-reference/compute-services/vm-auto-scaling/models.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
