Chilkat Online Tools

DescribeJobs Perl Example

AWS Batch

use chilkat();

# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.

$rest = chilkat::CkRest->new();

$authAws = chilkat::CkAuthAws->new();
$authAws->put_AccessKey("AWS_ACCESS_KEY");
$authAws->put_SecretKey("AWS_SECRET_KEY");

# Don't forget to change the region to your particular region. (Also make the same change in the call to Connect below.)
$authAws->put_Region("us-west-2");
$authAws->put_ServiceName("batch");
# SetAuthAws causes Chilkat to automatically add the following headers: Authorization, X-Amz-Date
$rest->SetAuthAws($authAws);

# URL: https://batch.us-west-2.amazonaws.com/
# Use the same region as specified above.
$success = $rest->Connect("batch.us-west-2.amazonaws.com",443,1,1);
if ($success != 1) {
    print "ConnectFailReason: " . $rest->get_ConnectFailReason() . "\r\n";
    print $rest->lastErrorText() . "\r\n";
    exit;
}

# The following code creates the JSON request body.
# The JSON created by this code is shown below.

# Use this online tool to generate code from sample JSON:
# Generate Code to Create JSON

$json = chilkat::CkJsonObject->new();
$json->UpdateString("jobs[0]","string");

# The JSON request body created by the above code:

# {
#   "jobs": [
#     "string"
#   ]
# }

$rest->AddHeader("Content-Type","application/x-amz-json-1.1");
$rest->AddHeader("X-Amz-Target","DescribeJobs");

$sbRequestBody = chilkat::CkStringBuilder->new();
$json->EmitSb($sbRequestBody);
$sbResponseBody = chilkat::CkStringBuilder->new();
$success = $rest->FullRequestSb("POST","/v1/describejobs",$sbRequestBody,$sbResponseBody);
if ($success != 1) {
    print $rest->lastErrorText() . "\r\n";
    exit;
}

$respStatusCode = $rest->get_ResponseStatusCode();
print "response status code = " . $respStatusCode . "\r\n";
if ($respStatusCode != 200) {
    print "Response Header:" . "\r\n";
    print $rest->responseHeader() . "\r\n";
    print "Response Body:" . "\r\n";
    print $sbResponseBody->getAsString() . "\r\n";
    exit;
}

$jResp = chilkat::CkJsonObject->new();
$jResp->LoadSb($sbResponseBody);

# The following code parses the JSON response.
# A sample JSON response is shown below the sample code.

# Use this online tool to generate parsing code from sample JSON:
# Generate Parsing Code from JSON

$i = 0;
$count_i = $jResp->SizeOfArray("jobs");
while ($i < $count_i) {
    $jResp->put_I($i);
    $Index = $jResp->IntOf("jobs[i].arrayProperties.index");
    $Size = $jResp->IntOf("jobs[i].arrayProperties.size");
    $v_String = $jResp->IntOf("jobs[i].arrayProperties.statusSummary.string");
    $ContainerInstanceArn = $jResp->stringOf("jobs[i].container.containerInstanceArn");
    $ExecutionRoleArn = $jResp->stringOf("jobs[i].container.executionRoleArn");
    $ExitCode = $jResp->IntOf("jobs[i].container.exitCode");
    $PlatformVersion = $jResp->stringOf("jobs[i].container.fargatePlatformConfiguration.platformVersion");
    $Image = $jResp->stringOf("jobs[i].container.image");
    $InstanceType = $jResp->stringOf("jobs[i].container.instanceType");
    $JobRoleArn = $jResp->stringOf("jobs[i].container.jobRoleArn");
    $InitProcessEnabled = $jResp->IntOf("jobs[i].container.linuxParameters.initProcessEnabled");
    $MaxSwap = $jResp->IntOf("jobs[i].container.linuxParameters.maxSwap");
    $SharedMemorySize = $jResp->IntOf("jobs[i].container.linuxParameters.sharedMemorySize");
    $Swappiness = $jResp->IntOf("jobs[i].container.linuxParameters.swappiness");
    $LogDriver = $jResp->stringOf("jobs[i].container.logConfiguration.logDriver");
    $OptionsString = $jResp->stringOf("jobs[i].container.logConfiguration.options.string");
    $LogStreamName = $jResp->stringOf("jobs[i].container.logStreamName");
    $Memory = $jResp->IntOf("jobs[i].container.memory");
    $AssignPublicIp = $jResp->stringOf("jobs[i].container.networkConfiguration.assignPublicIp");
    $Privileged = $jResp->IntOf("jobs[i].container.privileged");
    $ReadonlyRootFilesystem = $jResp->IntOf("jobs[i].container.readonlyRootFilesystem");
    $Reason = $jResp->stringOf("jobs[i].container.reason");
    $TaskArn = $jResp->stringOf("jobs[i].container.taskArn");
    $User = $jResp->stringOf("jobs[i].container.user");
    $Vcpus = $jResp->IntOf("jobs[i].container.vcpus");
    $createdAt = $jResp->IntOf("jobs[i].createdAt");
    $jobArn = $jResp->stringOf("jobs[i].jobArn");
    $jobDefinition = $jResp->stringOf("jobs[i].jobDefinition");
    $jobId = $jResp->stringOf("jobs[i].jobId");
    $jobName = $jResp->stringOf("jobs[i].jobName");
    $jobQueue = $jResp->stringOf("jobs[i].jobQueue");
    $IsMainNode = $jResp->IntOf("jobs[i].nodeDetails.isMainNode");
    $NodeIndex = $jResp->IntOf("jobs[i].nodeDetails.nodeIndex");
    $MainNode = $jResp->IntOf("jobs[i].nodeProperties.mainNode");
    $NumNodes = $jResp->IntOf("jobs[i].nodeProperties.numNodes");
    $parametersString = $jResp->stringOf("jobs[i].parameters.string");
    $propagateTags = $jResp->IntOf("jobs[i].propagateTags");
    $Attempts = $jResp->IntOf("jobs[i].retryStrategy.attempts");
    $schedulingPriority = $jResp->IntOf("jobs[i].schedulingPriority");
    $shareIdentifier = $jResp->stringOf("jobs[i].shareIdentifier");
    $startedAt = $jResp->IntOf("jobs[i].startedAt");
    $status = $jResp->stringOf("jobs[i].status");
    $statusReason = $jResp->stringOf("jobs[i].statusReason");
    $stoppedAt = $jResp->IntOf("jobs[i].stoppedAt");
    $tagsString = $jResp->stringOf("jobs[i].tags.string");
    $AttemptDurationSeconds = $jResp->IntOf("jobs[i].timeout.attemptDurationSeconds");
    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].attempts");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $containerContainerInstanceArn = $jResp->stringOf("jobs[i].attempts[j].container.containerInstanceArn");
        $containerExitCode = $jResp->IntOf("jobs[i].attempts[j].container.exitCode");
        $containerLogStreamName = $jResp->stringOf("jobs[i].attempts[j].container.logStreamName");
        $containerReason = $jResp->stringOf("jobs[i].attempts[j].container.reason");
        $containerTaskArn = $jResp->stringOf("jobs[i].attempts[j].container.taskArn");
        $startedAt = $jResp->IntOf("jobs[i].attempts[j].startedAt");
        $statusReason = $jResp->stringOf("jobs[i].attempts[j].statusReason");
        $stoppedAt = $jResp->IntOf("jobs[i].attempts[j].stoppedAt");
        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].attempts[j].container.networkInterfaces");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $attachmentId = $jResp->stringOf("jobs[i].attempts[j].container.networkInterfaces[k].attachmentId");
            $ipv6Address = $jResp->stringOf("jobs[i].attempts[j].container.networkInterfaces[k].ipv6Address");
            $privateIpv4Address = $jResp->stringOf("jobs[i].attempts[j].container.networkInterfaces[k].privateIpv4Address");
            $k = $k + 1;
        }

        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].container.command");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $strVal = $jResp->stringOf("jobs[i].container.command[j]");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].container.environment");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $name = $jResp->stringOf("jobs[i].container.environment[j].name");
        $value = $jResp->stringOf("jobs[i].container.environment[j].value");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].container.linuxParameters.devices");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $containerPath = $jResp->stringOf("jobs[i].container.linuxParameters.devices[j].containerPath");
        $hostPath = $jResp->stringOf("jobs[i].container.linuxParameters.devices[j].hostPath");
        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].container.linuxParameters.devices[j].permissions");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $strVal = $jResp->stringOf("jobs[i].container.linuxParameters.devices[j].permissions[k]");
            $k = $k + 1;
        }

        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].container.linuxParameters.tmpfs");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $containerPath = $jResp->stringOf("jobs[i].container.linuxParameters.tmpfs[j].containerPath");
        $size = $jResp->IntOf("jobs[i].container.linuxParameters.tmpfs[j].size");
        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].container.linuxParameters.tmpfs[j].mountOptions");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $strVal = $jResp->stringOf("jobs[i].container.linuxParameters.tmpfs[j].mountOptions[k]");
            $k = $k + 1;
        }

        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].container.logConfiguration.secretOptions");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $name = $jResp->stringOf("jobs[i].container.logConfiguration.secretOptions[j].name");
        $valueFrom = $jResp->stringOf("jobs[i].container.logConfiguration.secretOptions[j].valueFrom");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].container.mountPoints");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $containerPath = $jResp->stringOf("jobs[i].container.mountPoints[j].containerPath");
        $readOnly = $jResp->IntOf("jobs[i].container.mountPoints[j].readOnly");
        $sourceVolume = $jResp->stringOf("jobs[i].container.mountPoints[j].sourceVolume");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].container.networkInterfaces");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $attachmentId = $jResp->stringOf("jobs[i].container.networkInterfaces[j].attachmentId");
        $ipv6Address = $jResp->stringOf("jobs[i].container.networkInterfaces[j].ipv6Address");
        $privateIpv4Address = $jResp->stringOf("jobs[i].container.networkInterfaces[j].privateIpv4Address");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].container.resourceRequirements");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $v_type = $jResp->stringOf("jobs[i].container.resourceRequirements[j].type");
        $value = $jResp->stringOf("jobs[i].container.resourceRequirements[j].value");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].container.secrets");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $name = $jResp->stringOf("jobs[i].container.secrets[j].name");
        $valueFrom = $jResp->stringOf("jobs[i].container.secrets[j].valueFrom");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].container.ulimits");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $hardLimit = $jResp->IntOf("jobs[i].container.ulimits[j].hardLimit");
        $name = $jResp->stringOf("jobs[i].container.ulimits[j].name");
        $softLimit = $jResp->IntOf("jobs[i].container.ulimits[j].softLimit");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].container.volumes");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $AccessPointId = $jResp->stringOf("jobs[i].container.volumes[j].efsVolumeConfiguration.authorizationConfig.accessPointId");
        $Iam = $jResp->stringOf("jobs[i].container.volumes[j].efsVolumeConfiguration.authorizationConfig.iam");
        $FileSystemId = $jResp->stringOf("jobs[i].container.volumes[j].efsVolumeConfiguration.fileSystemId");
        $RootDirectory = $jResp->stringOf("jobs[i].container.volumes[j].efsVolumeConfiguration.rootDirectory");
        $TransitEncryption = $jResp->stringOf("jobs[i].container.volumes[j].efsVolumeConfiguration.transitEncryption");
        $TransitEncryptionPort = $jResp->IntOf("jobs[i].container.volumes[j].efsVolumeConfiguration.transitEncryptionPort");
        $SourcePath = $jResp->stringOf("jobs[i].container.volumes[j].host.sourcePath");
        $name = $jResp->stringOf("jobs[i].container.volumes[j].name");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].dependsOn");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $jobId = $jResp->stringOf("jobs[i].dependsOn[j].jobId");
        $v_type = $jResp->stringOf("jobs[i].dependsOn[j].type");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].nodeProperties.nodeRangeProperties");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $containerExecutionRoleArn = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.executionRoleArn");
        $FargatePlatformConfigurationPlatformVersion = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.fargatePlatformConfiguration.platformVersion");
        $containerImage = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.image");
        $containerInstanceType = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.instanceType");
        $containerJobRoleArn = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.jobRoleArn");
        $LinuxParametersInitProcessEnabled = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.linuxParameters.initProcessEnabled");
        $LinuxParametersMaxSwap = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.linuxParameters.maxSwap");
        $LinuxParametersSharedMemorySize = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.linuxParameters.sharedMemorySize");
        $LinuxParametersSwappiness = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.linuxParameters.swappiness");
        $LogConfigurationLogDriver = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.logConfiguration.logDriver");
        $OptionsString = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.logConfiguration.options.string");
        $containerMemory = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.memory");
        $NetworkConfigurationAssignPublicIp = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.networkConfiguration.assignPublicIp");
        $containerPrivileged = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.privileged");
        $containerReadonlyRootFilesystem = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.readonlyRootFilesystem");
        $containerUser = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.user");
        $containerVcpus = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.vcpus");
        $targetNodes = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].targetNodes");
        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].nodeProperties.nodeRangeProperties[j].container.command");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $strVal = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.command[k]");
            $k = $k + 1;
        }

        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].nodeProperties.nodeRangeProperties[j].container.environment");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $name = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.environment[k].name");
            $value = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.environment[k].value");
            $k = $k + 1;
        }

        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].nodeProperties.nodeRangeProperties[j].container.linuxParameters.devices");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $containerPath = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.linuxParameters.devices[k].containerPath");
            $hostPath = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.linuxParameters.devices[k].hostPath");

            # json1 is a JsonObject
            $json1 = $jResp->ObjectOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.linuxParameters.devices[k]");
            $i1 = 0;
            $count_i1 = $json1->SizeOfArray("permissions");
            while ($i1 < $count_i1) {
                $json1->put_I($i1);
                $strVal = $json1->stringOf("permissions[i]");
                $i1 = $i1 + 1;
            }

            $k = $k + 1;
        }

        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].nodeProperties.nodeRangeProperties[j].container.linuxParameters.tmpfs");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $containerPath = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.linuxParameters.tmpfs[k].containerPath");
            $size = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.linuxParameters.tmpfs[k].size");

            # json1 is a JsonObject
            $json1 = $jResp->ObjectOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.linuxParameters.tmpfs[k]");
            $i1 = 0;
            $count_i1 = $json1->SizeOfArray("mountOptions");
            while ($i1 < $count_i1) {
                $json1->put_I($i1);
                $strVal = $json1->stringOf("mountOptions[i]");
                $i1 = $i1 + 1;
            }

            $k = $k + 1;
        }

        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].nodeProperties.nodeRangeProperties[j].container.logConfiguration.secretOptions");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $name = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.logConfiguration.secretOptions[k].name");
            $valueFrom = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.logConfiguration.secretOptions[k].valueFrom");
            $k = $k + 1;
        }

        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].nodeProperties.nodeRangeProperties[j].container.mountPoints");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $containerPath = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.mountPoints[k].containerPath");
            $readOnly = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.mountPoints[k].readOnly");
            $sourceVolume = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.mountPoints[k].sourceVolume");
            $k = $k + 1;
        }

        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].nodeProperties.nodeRangeProperties[j].container.resourceRequirements");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $v_type = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.resourceRequirements[k].type");
            $value = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.resourceRequirements[k].value");
            $k = $k + 1;
        }

        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].nodeProperties.nodeRangeProperties[j].container.secrets");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $name = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.secrets[k].name");
            $valueFrom = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.secrets[k].valueFrom");
            $k = $k + 1;
        }

        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].nodeProperties.nodeRangeProperties[j].container.ulimits");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $hardLimit = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.ulimits[k].hardLimit");
            $name = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.ulimits[k].name");
            $softLimit = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.ulimits[k].softLimit");
            $k = $k + 1;
        }

        $k = 0;
        $count_k = $jResp->SizeOfArray("jobs[i].nodeProperties.nodeRangeProperties[j].container.volumes");
        while ($k < $count_k) {
            $jResp->put_K($k);
            $AuthorizationConfigAccessPointId = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.volumes[k].efsVolumeConfiguration.authorizationConfig.accessPointId");
            $AuthorizationConfigIam = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.volumes[k].efsVolumeConfiguration.authorizationConfig.iam");
            $efsVolumeConfigurationFileSystemId = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.volumes[k].efsVolumeConfiguration.fileSystemId");
            $efsVolumeConfigurationRootDirectory = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.volumes[k].efsVolumeConfiguration.rootDirectory");
            $efsVolumeConfigurationTransitEncryption = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.volumes[k].efsVolumeConfiguration.transitEncryption");
            $efsVolumeConfigurationTransitEncryptionPort = $jResp->IntOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.volumes[k].efsVolumeConfiguration.transitEncryptionPort");
            $hostSourcePath = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.volumes[k].host.sourcePath");
            $name = $jResp->stringOf("jobs[i].nodeProperties.nodeRangeProperties[j].container.volumes[k].name");
            $k = $k + 1;
        }

        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].platformCapabilities");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $strVal = $jResp->stringOf("jobs[i].platformCapabilities[j]");
        $j = $j + 1;
    }

    $j = 0;
    $count_j = $jResp->SizeOfArray("jobs[i].retryStrategy.evaluateOnExit");
    while ($j < $count_j) {
        $jResp->put_J($j);
        $action = $jResp->stringOf("jobs[i].retryStrategy.evaluateOnExit[j].action");
        $onExitCode = $jResp->stringOf("jobs[i].retryStrategy.evaluateOnExit[j].onExitCode");
        $onReason = $jResp->stringOf("jobs[i].retryStrategy.evaluateOnExit[j].onReason");
        $onStatusReason = $jResp->stringOf("jobs[i].retryStrategy.evaluateOnExit[j].onStatusReason");
        $j = $j + 1;
    }

    $i = $i + 1;
}

# A sample JSON response body parsed by the above code:

# {
#   "jobs": [
#     {
#       "arrayProperties": {
#         "index": number,
#         "size": number,
#         "statusSummary": {
#           "string": number
#         }
#       },
#       "attempts": [
#         {
#           "container": {
#             "containerInstanceArn": "string",
#             "exitCode": number,
#             "logStreamName": "string",
#             "networkInterfaces": [
#               {
#                 "attachmentId": "string",
#                 "ipv6Address": "string",
#                 "privateIpv4Address": "string"
#               }
#             ],
#             "reason": "string",
#             "taskArn": "string"
#           },
#           "startedAt": number,
#           "statusReason": "string",
#           "stoppedAt": number
#         }
#       ],
#       "container": {
#         "command": [
#           "string"
#         ],
#         "containerInstanceArn": "string",
#         "environment": [
#           {
#             "name": "string",
#             "value": "string"
#           }
#         ],
#         "executionRoleArn": "string",
#         "exitCode": number,
#         "fargatePlatformConfiguration": {
#           "platformVersion": "string"
#         },
#         "image": "string",
#         "instanceType": "string",
#         "jobRoleArn": "string",
#         "linuxParameters": {
#           "devices": [
#             {
#               "containerPath": "string",
#               "hostPath": "string",
#               "permissions": [
#                 "string"
#               ]
#             }
#           ],
#           "initProcessEnabled": boolean,
#           "maxSwap": number,
#           "sharedMemorySize": number,
#           "swappiness": number,
#           "tmpfs": [
#             {
#               "containerPath": "string",
#               "mountOptions": [
#                 "string"
#               ],
#               "size": number
#             }
#           ]
#         },
#         "logConfiguration": {
#           "logDriver": "string",
#           "options": {
#             "string": "string"
#           },
#           "secretOptions": [
#             {
#               "name": "string",
#               "valueFrom": "string"
#             }
#           ]
#         },
#         "logStreamName": "string",
#         "memory": number,
#         "mountPoints": [
#           {
#             "containerPath": "string",
#             "readOnly": boolean,
#             "sourceVolume": "string"
#           }
#         ],
#         "networkConfiguration": {
#           "assignPublicIp": "string"
#         },
#         "networkInterfaces": [
#           {
#             "attachmentId": "string",
#             "ipv6Address": "string",
#             "privateIpv4Address": "string"
#           }
#         ],
#         "privileged": boolean,
#         "readonlyRootFilesystem": boolean,
#         "reason": "string",
#         "resourceRequirements": [
#           {
#             "type": "string",
#             "value": "string"
#           }
#         ],
#         "secrets": [
#           {
#             "name": "string",
#             "valueFrom": "string"
#           }
#         ],
#         "taskArn": "string",
#         "ulimits": [
#           {
#             "hardLimit": number,
#             "name": "string",
#             "softLimit": number
#           }
#         ],
#         "user": "string",
#         "vcpus": number,
#         "volumes": [
#           {
#             "efsVolumeConfiguration": {
#               "authorizationConfig": {
#                 "accessPointId": "string",
#                 "iam": "string"
#               },
#               "fileSystemId": "string",
#               "rootDirectory": "string",
#               "transitEncryption": "string",
#               "transitEncryptionPort": number
#             },
#             "host": {
#               "sourcePath": "string"
#             },
#             "name": "string"
#           }
#         ]
#       },
#       "createdAt": number,
#       "dependsOn": [
#         {
#           "jobId": "string",
#           "type": "string"
#         }
#       ],
#       "jobArn": "string",
#       "jobDefinition": "string",
#       "jobId": "string",
#       "jobName": "string",
#       "jobQueue": "string",
#       "nodeDetails": {
#         "isMainNode": boolean,
#         "nodeIndex": number
#       },
#       "nodeProperties": {
#         "mainNode": number,
#         "nodeRangeProperties": [
#           {
#             "container": {
#               "command": [
#                 "string"
#               ],
#               "environment": [
#                 {
#                   "name": "string",
#                   "value": "string"
#                 }
#               ],
#               "executionRoleArn": "string",
#               "fargatePlatformConfiguration": {
#                 "platformVersion": "string"
#               },
#               "image": "string",
#               "instanceType": "string",
#               "jobRoleArn": "string",
#               "linuxParameters": {
#                 "devices": [
#                   {
#                     "containerPath": "string",
#                     "hostPath": "string",
#                     "permissions": [
#                       "string"
#                     ]
#                   }
#                 ],
#                 "initProcessEnabled": boolean,
#                 "maxSwap": number,
#                 "sharedMemorySize": number,
#                 "swappiness": number,
#                 "tmpfs": [
#                   {
#                     "containerPath": "string",
#                     "mountOptions": [
#                       "string"
#                     ],
#                     "size": number
#                   }
#                 ]
#               },
#               "logConfiguration": {
#                 "logDriver": "string",
#                 "options": {
#                   "string": "string"
#                 },
#                 "secretOptions": [
#                   {
#                     "name": "string",
#                     "valueFrom": "string"
#                   }
#                 ]
#               },
#               "memory": number,
#               "mountPoints": [
#                 {
#                   "containerPath": "string",
#                   "readOnly": boolean,
#                   "sourceVolume": "string"
#                 }
#               ],
#               "networkConfiguration": {
#                 "assignPublicIp": "string"
#               },
#               "privileged": boolean,
#               "readonlyRootFilesystem": boolean,
#               "resourceRequirements": [
#                 {
#                   "type": "string",
#                   "value": "string"
#                 }
#               ],
#               "secrets": [
#                 {
#                   "name": "string",
#                   "valueFrom": "string"
#                 }
#               ],
#               "ulimits": [
#                 {
#                   "hardLimit": number,
#                   "name": "string",
#                   "softLimit": number
#                 }
#               ],
#               "user": "string",
#               "vcpus": number,
#               "volumes": [
#                 {
#                   "efsVolumeConfiguration": {
#                     "authorizationConfig": {
#                       "accessPointId": "string",
#                       "iam": "string"
#                     },
#                     "fileSystemId": "string",
#                     "rootDirectory": "string",
#                     "transitEncryption": "string",
#                     "transitEncryptionPort": number
#                   },
#                   "host": {
#                     "sourcePath": "string"
#                   },
#                   "name": "string"
#                 }
#               ]
#             },
#             "targetNodes": "string"
#           }
#         ],
#         "numNodes": number
#       },
#       "parameters": {
#         "string": "string"
#       },
#       "platformCapabilities": [
#         "string"
#       ],
#       "propagateTags": boolean,
#       "retryStrategy": {
#         "attempts": number,
#         "evaluateOnExit": [
#           {
#             "action": "string",
#             "onExitCode": "string",
#             "onReason": "string",
#             "onStatusReason": "string"
#           }
#         ]
#       },
#       "schedulingPriority": number,
#       "shareIdentifier": "string",
#       "startedAt": number,
#       "status": "string",
#       "statusReason": "string",
#       "stoppedAt": number,
#       "tags": {
#         "string": "string"
#       },
#       "timeout": {
#         "attemptDurationSeconds": number
#       }
#     }
#   ]
# }