Chilkat Online Tools

DescribeJobs phpExt Example

AWS Batch

<?php

// The version number (9_5_0) should match version of the Chilkat extension used, omitting the micro-version number.
// For example, if using Chilkat v9.5.0.48, then include as shown here:
include("chilkat_9_5_0.php");

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

$rest = new CkRest();

$authAws = new CkAuthAws();
$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,true,true);
if ($success != true) {
    print 'ConnectFailReason: ' . $rest->get_ConnectFailReason() . "\n";
    print $rest->lastErrorText() . "\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 = new CkJsonObject();
$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 = new CkStringBuilder();
$json->EmitSb($sbRequestBody);
$sbResponseBody = new CkStringBuilder();
$success = $rest->FullRequestSb('POST','/v1/describejobs',$sbRequestBody,$sbResponseBody);
if ($success != true) {
    print $rest->lastErrorText() . "\n";
    exit;
}

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

$jResp = new CkJsonObject();
$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 CkJsonObject
            $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 CkJsonObject
            $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
//       }
//     }
//   ]
// }

?>