# Scaling Policies

## Setup

In order to interact with the functionality of a group’s scaling policies, you must first retrieve the details of the group itself. To do this, you must substitute {groupId} for your group’s ID:

    $group = $service->group('{groupId}');

## Get all policies

    $policies = $group->getScalingPolicies();

    foreach ($policies as $policy) {
        printf("Name: %s Type: %s\n", $policy->name, $policy->type);
    }

## Create new scaling policies

Creating policies is achieved through passing an array to the `create` method.

    $policies = array(
      array(
        'name'     => 'NEW NAME',
        'change'   => 1,
        'cooldown' => 150,
        'type'     => 'webhook',
      )
    );

    $group->createScalingPolicies($policies);

## Get an existing scaling policy

    $policy = $group->getScalingPolicy('{policyId}');

## Update a scaling policy

    $policy = $group->getScalingPolicy('{policyId}');
    $policy->update(array(
        'name' => 'More relevant name'
    ));

## Delete a scaling policy

    $policy = $group->getScalingPolicy('{policyId}');
    $policy->delete();

## Execute a scaling policy

    $policy = $group->getScalingPolicy('{policyId}');
    $policy->execute();