Chilkat Online Tools

GetFindings delphiAx Example

Amazon GuardDuty

var
rest: TChilkatRest;
success: Integer;
authAws: TChilkatAuthAws;
json: TChilkatJsonObject;
sbRequestBody: TChilkatStringBuilder;
sbResponseBody: TChilkatStringBuilder;
respStatusCode: Integer;
jResp: TChilkatJsonObject;
accountId: WideString;
arn: WideString;
confidence: Integer;
createdAt: WideString;
description: WideString;
id: WideString;
partition: WideString;
region: WideString;
AccessKeyId: WideString;
PrincipalId: WideString;
UserName: WideString;
UserType: WideString;
Arn: WideString;
CreatedAt: Integer;
Name: WideString;
Status: WideString;
VpcId: WideString;
AvailabilityZone: WideString;
IamInstanceProfileArn: WideString;
Id: WideString;
ImageDescription: WideString;
ImageId: WideString;
InstanceId: WideString;
InstanceState: WideString;
InstanceType: WideString;
LaunchTime: WideString;
OutpostArn: WideString;
Platform: WideString;
Uid: WideString;
Username: WideString;
HostNetwork: Integer;
KubernetesWorkloadDetailsName: WideString;
Namespace: WideString;
v_Type: WideString;
KubernetesWorkloadDetailsUid: WideString;
ResourceType: WideString;
schemaVersion: WideString;
ActionType: WideString;
Api: WideString;
CallerType: WideString;
Domain: WideString;
ErrorCode: WideString;
AccountId: WideString;
Affiliated: Integer;
CityName: WideString;
CountryCode: WideString;
CountryName: WideString;
Lat: Integer;
Lon: Integer;
IpAddressV4: WideString;
v_Asn: WideString;
AsnOrg: WideString;
Isp: WideString;
Org: WideString;
ServiceName: WideString;
UserAgent: WideString;
DnsRequestActionDomain: WideString;
Parameters: WideString;
CityCityName: WideString;
CountryCountryCode: WideString;
CountryCountryName: WideString;
GeoLocationLat: Integer;
GeoLocationLon: Integer;
RemoteIpDetailsIpAddressV4: WideString;
OrganizationAsn: WideString;
OrganizationAsnOrg: WideString;
OrganizationIsp: WideString;
OrganizationOrg: WideString;
RequestUri: WideString;
StatusCode: Integer;
KubernetesApiCallActionUserAgent: WideString;
Verb: WideString;
Blocked: Integer;
ConnectionDirection: WideString;
LocalIpDetailsIpAddressV4: WideString;
Port: Integer;
PortName: WideString;
Protocol: WideString;
RemotePortDetailsPort: Integer;
RemotePortDetailsPortName: WideString;
PortProbeActionBlocked: Integer;
Archived: Integer;
Count: Integer;
DetectorId: WideString;
EventFirstSeen: WideString;
EventLastSeen: WideString;
ResourceRole: WideString;
serviceServiceName: WideString;
UserFeedback: WideString;
severity: Integer;
title: WideString;
v_type: WideString;
updatedAt: WideString;
j: Integer;
count_j: Integer;
key: WideString;
value: WideString;
networkInterfaceId: WideString;
privateDnsName: WideString;
privateIpAddress: WideString;
publicDnsName: WideString;
publicIp: WideString;
subnetId: WideString;
vpcId: WideString;
k: Integer;
count_k: Integer;
strVal: WideString;
groupId: WideString;
groupName: WideString;
code: WideString;
productType: WideString;
containerRuntime: WideString;
image: WideString;
imagePrefix: WideString;
name: WideString;
Privileged: Integer;
mountPath: WideString;
Path: WideString;
createdAt_int: Integer;
EncryptionType: WideString;
KmsMasterKeyArn: WideString;
ownerId: WideString;
EffectivePermission: WideString;
BlockPublicAcls: Integer;
BlockPublicPolicy: Integer;
IgnorePublicAcls: Integer;
RestrictPublicBuckets: Integer;
AllowsPublicReadAccess: Integer;
AllowsPublicWriteAccess: Integer;
BlockPublicAccessBlockPublicAcls: Integer;
BlockPublicAccessBlockPublicPolicy: Integer;
BlockPublicAccessIgnorePublicAcls: Integer;
BlockPublicAccessRestrictPublicBuckets: Integer;
BucketPolicyAllowsPublicReadAccess: Integer;
BucketPolicyAllowsPublicWriteAccess: Integer;
localIpDetailsIpAddressV4: WideString;
localPortDetailsPort: Integer;
localPortDetailsPortName: WideString;
remoteIpDetailsIpAddressV4: WideString;
threatListName: WideString;
i: Integer;
count_i: Integer;

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

rest := TChilkatRest.Create(Self);

authAws := TChilkatAuthAws.Create(Self);
authAws.AccessKey := 'AWS_ACCESS_KEY';
authAws.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.Region := 'us-west-2';
authAws.ServiceName := 'guardduty';
// SetAuthAws causes Chilkat to automatically add the following headers: Authorization, X-Amz-Date
rest.SetAuthAws(authAws.ControlInterface);

// URL: https://guardduty.us-west-2.amazonaws.com/
// Use the same region as specified above.
success := rest.Connect('guardduty.us-west-2.amazonaws.com',443,1,1);
if (success <> 1) then
  begin
    Memo1.Lines.Add('ConnectFailReason: ' + IntToStr(rest.ConnectFailReason));
    Memo1.Lines.Add(rest.LastErrorText);
    Exit;
  end;

// 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 := TChilkatJsonObject.Create(Self);
json.UpdateString('findingIds[0]','string');
json.UpdateString('sortCriteria.attributeName','string');
json.UpdateString('sortCriteria.orderBy','string');

// The JSON request body created by the above code:

// {
//   "findingIds": [
//     "string"
//   ],
//   "sortCriteria": {
//     "attributeName": "string",
//     "orderBy": "string"
//   }
// }

rest.AddHeader('Content-Type','application/x-amz-json-1.1');
rest.AddHeader('X-Amz-Target','GetFindings');

sbRequestBody := TChilkatStringBuilder.Create(Self);
json.EmitSb(sbRequestBody.ControlInterface);
sbResponseBody := TChilkatStringBuilder.Create(Self);
success := rest.FullRequestSb('POST','/detector/{detectorId}/findings/get',sbRequestBody.ControlInterface,sbResponseBody.ControlInterface);
if (success <> 1) then
  begin
    Memo1.Lines.Add(rest.LastErrorText);
    Exit;
  end;
respStatusCode := rest.ResponseStatusCode;
Memo1.Lines.Add('response status code = ' + IntToStr(respStatusCode));
if (respStatusCode <> 200) then
  begin
    Memo1.Lines.Add('Response Header:');
    Memo1.Lines.Add(rest.ResponseHeader);
    Memo1.Lines.Add('Response Body:');
    Memo1.Lines.Add(sbResponseBody.GetAsString());
    Exit;
  end;

jResp := TChilkatJsonObject.Create(Self);
jResp.LoadSb(sbResponseBody.ControlInterface);

// 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('findings');
while i < count_i do
  begin
    jResp.I := i;
    accountId := jResp.StringOf('findings[i].accountId');
    arn := jResp.StringOf('findings[i].arn');
    confidence := jResp.IntOf('findings[i].confidence');
    createdAt := jResp.StringOf('findings[i].createdAt');
    description := jResp.StringOf('findings[i].description');
    id := jResp.StringOf('findings[i].id');
    partition := jResp.StringOf('findings[i].partition');
    region := jResp.StringOf('findings[i].region');
    AccessKeyId := jResp.StringOf('findings[i].resource.accessKeyDetails.accessKeyId');
    PrincipalId := jResp.StringOf('findings[i].resource.accessKeyDetails.principalId');
    UserName := jResp.StringOf('findings[i].resource.accessKeyDetails.userName');
    UserType := jResp.StringOf('findings[i].resource.accessKeyDetails.userType');
    Arn := jResp.StringOf('findings[i].resource.eksClusterDetails.arn');
    CreatedAt := jResp.IntOf('findings[i].resource.eksClusterDetails.createdAt');
    Name := jResp.StringOf('findings[i].resource.eksClusterDetails.name');
    Status := jResp.StringOf('findings[i].resource.eksClusterDetails.status');
    VpcId := jResp.StringOf('findings[i].resource.eksClusterDetails.vpcId');
    AvailabilityZone := jResp.StringOf('findings[i].resource.instanceDetails.availabilityZone');
    IamInstanceProfileArn := jResp.StringOf('findings[i].resource.instanceDetails.iamInstanceProfile.arn');
    Id := jResp.StringOf('findings[i].resource.instanceDetails.iamInstanceProfile.id');
    ImageDescription := jResp.StringOf('findings[i].resource.instanceDetails.imageDescription');
    ImageId := jResp.StringOf('findings[i].resource.instanceDetails.imageId');
    InstanceId := jResp.StringOf('findings[i].resource.instanceDetails.instanceId');
    InstanceState := jResp.StringOf('findings[i].resource.instanceDetails.instanceState');
    InstanceType := jResp.StringOf('findings[i].resource.instanceDetails.instanceType');
    LaunchTime := jResp.StringOf('findings[i].resource.instanceDetails.launchTime');
    OutpostArn := jResp.StringOf('findings[i].resource.instanceDetails.outpostArn');
    Platform := jResp.StringOf('findings[i].resource.instanceDetails.platform');
    Uid := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesUserDetails.uid');
    Username := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesUserDetails.username');
    HostNetwork := jResp.IntOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.hostNetwork');
    KubernetesWorkloadDetailsName := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.name');
    Namespace := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.namespace');
    v_Type := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.type');
    KubernetesWorkloadDetailsUid := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.uid');
    ResourceType := jResp.StringOf('findings[i].resource.resourceType');
    schemaVersion := jResp.StringOf('findings[i].schemaVersion');
    ActionType := jResp.StringOf('findings[i].service.action.actionType');
    Api := jResp.StringOf('findings[i].service.action.awsApiCallAction.api');
    CallerType := jResp.StringOf('findings[i].service.action.awsApiCallAction.callerType');
    Domain := jResp.StringOf('findings[i].service.action.awsApiCallAction.domainDetails.domain');
    ErrorCode := jResp.StringOf('findings[i].service.action.awsApiCallAction.errorCode');
    AccountId := jResp.StringOf('findings[i].service.action.awsApiCallAction.remoteAccountDetails.accountId');
    Affiliated := jResp.IntOf('findings[i].service.action.awsApiCallAction.remoteAccountDetails.affiliated');
    CityName := jResp.StringOf('findings[i].service.action.awsApiCallAction.remoteIpDetails.city.cityName');
    CountryCode := jResp.StringOf('findings[i].service.action.awsApiCallAction.remoteIpDetails.country.countryCode');
    CountryName := jResp.StringOf('findings[i].service.action.awsApiCallAction.remoteIpDetails.country.countryName');
    Lat := jResp.IntOf('findings[i].service.action.awsApiCallAction.remoteIpDetails.geoLocation.lat');
    Lon := jResp.IntOf('findings[i].service.action.awsApiCallAction.remoteIpDetails.geoLocation.lon');
    IpAddressV4 := jResp.StringOf('findings[i].service.action.awsApiCallAction.remoteIpDetails.ipAddressV4');
    v_Asn := jResp.StringOf('findings[i].service.action.awsApiCallAction.remoteIpDetails.organization.asn');
    AsnOrg := jResp.StringOf('findings[i].service.action.awsApiCallAction.remoteIpDetails.organization.asnOrg');
    Isp := jResp.StringOf('findings[i].service.action.awsApiCallAction.remoteIpDetails.organization.isp');
    Org := jResp.StringOf('findings[i].service.action.awsApiCallAction.remoteIpDetails.organization.org');
    ServiceName := jResp.StringOf('findings[i].service.action.awsApiCallAction.serviceName');
    UserAgent := jResp.StringOf('findings[i].service.action.awsApiCallAction.userAgent');
    DnsRequestActionDomain := jResp.StringOf('findings[i].service.action.dnsRequestAction.domain');
    Parameters := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.parameters');
    CityCityName := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.remoteIpDetails.city.cityName');
    CountryCountryCode := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.remoteIpDetails.country.countryCode');
    CountryCountryName := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.remoteIpDetails.country.countryName');
    GeoLocationLat := jResp.IntOf('findings[i].service.action.kubernetesApiCallAction.remoteIpDetails.geoLocation.lat');
    GeoLocationLon := jResp.IntOf('findings[i].service.action.kubernetesApiCallAction.remoteIpDetails.geoLocation.lon');
    RemoteIpDetailsIpAddressV4 := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.remoteIpDetails.ipAddressV4');
    OrganizationAsn := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.remoteIpDetails.organization.asn');
    OrganizationAsnOrg := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.remoteIpDetails.organization.asnOrg');
    OrganizationIsp := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.remoteIpDetails.organization.isp');
    OrganizationOrg := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.remoteIpDetails.organization.org');
    RequestUri := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.requestUri');
    StatusCode := jResp.IntOf('findings[i].service.action.kubernetesApiCallAction.statusCode');
    KubernetesApiCallActionUserAgent := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.userAgent');
    Verb := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.verb');
    Blocked := jResp.IntOf('findings[i].service.action.networkConnectionAction.blocked');
    ConnectionDirection := jResp.StringOf('findings[i].service.action.networkConnectionAction.connectionDirection');
    LocalIpDetailsIpAddressV4 := jResp.StringOf('findings[i].service.action.networkConnectionAction.localIpDetails.ipAddressV4');
    Port := jResp.IntOf('findings[i].service.action.networkConnectionAction.localPortDetails.port');
    PortName := jResp.StringOf('findings[i].service.action.networkConnectionAction.localPortDetails.portName');
    Protocol := jResp.StringOf('findings[i].service.action.networkConnectionAction.protocol');
    CityCityName := jResp.StringOf('findings[i].service.action.networkConnectionAction.remoteIpDetails.city.cityName');
    CountryCountryCode := jResp.StringOf('findings[i].service.action.networkConnectionAction.remoteIpDetails.country.countryCode');
    CountryCountryName := jResp.StringOf('findings[i].service.action.networkConnectionAction.remoteIpDetails.country.countryName');
    GeoLocationLat := jResp.IntOf('findings[i].service.action.networkConnectionAction.remoteIpDetails.geoLocation.lat');
    GeoLocationLon := jResp.IntOf('findings[i].service.action.networkConnectionAction.remoteIpDetails.geoLocation.lon');
    RemoteIpDetailsIpAddressV4 := jResp.StringOf('findings[i].service.action.networkConnectionAction.remoteIpDetails.ipAddressV4');
    OrganizationAsn := jResp.StringOf('findings[i].service.action.networkConnectionAction.remoteIpDetails.organization.asn');
    OrganizationAsnOrg := jResp.StringOf('findings[i].service.action.networkConnectionAction.remoteIpDetails.organization.asnOrg');
    OrganizationIsp := jResp.StringOf('findings[i].service.action.networkConnectionAction.remoteIpDetails.organization.isp');
    OrganizationOrg := jResp.StringOf('findings[i].service.action.networkConnectionAction.remoteIpDetails.organization.org');
    RemotePortDetailsPort := jResp.IntOf('findings[i].service.action.networkConnectionAction.remotePortDetails.port');
    RemotePortDetailsPortName := jResp.StringOf('findings[i].service.action.networkConnectionAction.remotePortDetails.portName');
    PortProbeActionBlocked := jResp.IntOf('findings[i].service.action.portProbeAction.blocked');
    Archived := jResp.IntOf('findings[i].service.archived');
    Count := jResp.IntOf('findings[i].service.count');
    DetectorId := jResp.StringOf('findings[i].service.detectorId');
    EventFirstSeen := jResp.StringOf('findings[i].service.eventFirstSeen');
    EventLastSeen := jResp.StringOf('findings[i].service.eventLastSeen');
    ResourceRole := jResp.StringOf('findings[i].service.resourceRole');
    serviceServiceName := jResp.StringOf('findings[i].service.serviceName');
    UserFeedback := jResp.StringOf('findings[i].service.userFeedback');
    severity := jResp.IntOf('findings[i].severity');
    title := jResp.StringOf('findings[i].title');
    v_type := jResp.StringOf('findings[i].type');
    updatedAt := jResp.StringOf('findings[i].updatedAt');
    j := 0;
    count_j := jResp.SizeOfArray('findings[i].resource.eksClusterDetails.tags');
    while j < count_j do
      begin
        jResp.J := j;
        key := jResp.StringOf('findings[i].resource.eksClusterDetails.tags[j].key');
        value := jResp.StringOf('findings[i].resource.eksClusterDetails.tags[j].value');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('findings[i].resource.instanceDetails.networkInterfaces');
    while j < count_j do
      begin
        jResp.J := j;
        networkInterfaceId := jResp.StringOf('findings[i].resource.instanceDetails.networkInterfaces[j].networkInterfaceId');
        privateDnsName := jResp.StringOf('findings[i].resource.instanceDetails.networkInterfaces[j].privateDnsName');
        privateIpAddress := jResp.StringOf('findings[i].resource.instanceDetails.networkInterfaces[j].privateIpAddress');
        publicDnsName := jResp.StringOf('findings[i].resource.instanceDetails.networkInterfaces[j].publicDnsName');
        publicIp := jResp.StringOf('findings[i].resource.instanceDetails.networkInterfaces[j].publicIp');
        subnetId := jResp.StringOf('findings[i].resource.instanceDetails.networkInterfaces[j].subnetId');
        vpcId := jResp.StringOf('findings[i].resource.instanceDetails.networkInterfaces[j].vpcId');
        k := 0;
        count_k := jResp.SizeOfArray('findings[i].resource.instanceDetails.networkInterfaces[j].ipv6Addresses');
        while k < count_k do
          begin
            jResp.K := k;
            strVal := jResp.StringOf('findings[i].resource.instanceDetails.networkInterfaces[j].ipv6Addresses[k]');
            k := k + 1;
          end;

        k := 0;
        count_k := jResp.SizeOfArray('findings[i].resource.instanceDetails.networkInterfaces[j].privateIpAddresses');
        while k < count_k do
          begin
            jResp.K := k;
            privateDnsName := jResp.StringOf('findings[i].resource.instanceDetails.networkInterfaces[j].privateIpAddresses[k].privateDnsName');
            privateIpAddress := jResp.StringOf('findings[i].resource.instanceDetails.networkInterfaces[j].privateIpAddresses[k].privateIpAddress');
            k := k + 1;
          end;

        k := 0;
        count_k := jResp.SizeOfArray('findings[i].resource.instanceDetails.networkInterfaces[j].securityGroups');
        while k < count_k do
          begin
            jResp.K := k;
            groupId := jResp.StringOf('findings[i].resource.instanceDetails.networkInterfaces[j].securityGroups[k].groupId');
            groupName := jResp.StringOf('findings[i].resource.instanceDetails.networkInterfaces[j].securityGroups[k].groupName');
            k := k + 1;
          end;

        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('findings[i].resource.instanceDetails.productCodes');
    while j < count_j do
      begin
        jResp.J := j;
        code := jResp.StringOf('findings[i].resource.instanceDetails.productCodes[j].code');
        productType := jResp.StringOf('findings[i].resource.instanceDetails.productCodes[j].productType');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('findings[i].resource.instanceDetails.tags');
    while j < count_j do
      begin
        jResp.J := j;
        key := jResp.StringOf('findings[i].resource.instanceDetails.tags[j].key');
        value := jResp.StringOf('findings[i].resource.instanceDetails.tags[j].value');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('findings[i].resource.kubernetesDetails.kubernetesUserDetails.groups');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesUserDetails.groups[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.containers');
    while j < count_j do
      begin
        jResp.J := j;
        containerRuntime := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.containers[j].containerRuntime');
        id := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.containers[j].id');
        image := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.containers[j].image');
        imagePrefix := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.containers[j].imagePrefix');
        name := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.containers[j].name');
        Privileged := jResp.IntOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.containers[j].securityContext.privileged');
        k := 0;
        count_k := jResp.SizeOfArray('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.containers[j].volumeMounts');
        while k < count_k do
          begin
            jResp.K := k;
            mountPath := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.containers[j].volumeMounts[k].mountPath');
            name := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.containers[j].volumeMounts[k].name');
            k := k + 1;
          end;

        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.volumes');
    while j < count_j do
      begin
        jResp.J := j;
        Path := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.volumes[j].hostPath.path');
        name := jResp.StringOf('findings[i].resource.kubernetesDetails.kubernetesWorkloadDetails.volumes[j].name');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('findings[i].resource.s3BucketDetails');
    while j < count_j do
      begin
        jResp.J := j;
        arn := jResp.StringOf('findings[i].resource.s3BucketDetails[j].arn');
        createdAt_int := jResp.IntOf('findings[i].resource.s3BucketDetails[j].createdAt');
        EncryptionType := jResp.StringOf('findings[i].resource.s3BucketDetails[j].defaultServerSideEncryption.encryptionType');
        KmsMasterKeyArn := jResp.StringOf('findings[i].resource.s3BucketDetails[j].defaultServerSideEncryption.kmsMasterKeyArn');
        name := jResp.StringOf('findings[i].resource.s3BucketDetails[j].name');
        ownerId := jResp.StringOf('findings[i].resource.s3BucketDetails[j].owner.id');
        EffectivePermission := jResp.StringOf('findings[i].resource.s3BucketDetails[j].publicAccess.effectivePermission');
        BlockPublicAcls := jResp.IntOf('findings[i].resource.s3BucketDetails[j].publicAccess.permissionConfiguration.accountLevelPermissions.blockPublicAccess.blockPublicAcls');
        BlockPublicPolicy := jResp.IntOf('findings[i].resource.s3BucketDetails[j].publicAccess.permissionConfiguration.accountLevelPermissions.blockPublicAccess.blockPublicPolicy');
        IgnorePublicAcls := jResp.IntOf('findings[i].resource.s3BucketDetails[j].publicAccess.permissionConfiguration.accountLevelPermissions.blockPublicAccess.ignorePublicAcls');
        RestrictPublicBuckets := jResp.IntOf('findings[i].resource.s3BucketDetails[j].publicAccess.permissionConfiguration.accountLevelPermissions.blockPublicAccess.restrictPublicBuckets');
        AllowsPublicReadAccess := jResp.IntOf('findings[i].resource.s3BucketDetails[j].publicAccess.permissionConfiguration.bucketLevelPermissions.accessControlList.allowsPublicReadAccess');
        AllowsPublicWriteAccess := jResp.IntOf('findings[i].resource.s3BucketDetails[j].publicAccess.permissionConfiguration.bucketLevelPermissions.accessControlList.allowsPublicWriteAccess');
        BlockPublicAccessBlockPublicAcls := jResp.IntOf('findings[i].resource.s3BucketDetails[j].publicAccess.permissionConfiguration.bucketLevelPermissions.blockPublicAccess.blockPublicAcls');
        BlockPublicAccessBlockPublicPolicy := jResp.IntOf('findings[i].resource.s3BucketDetails[j].publicAccess.permissionConfiguration.bucketLevelPermissions.blockPublicAccess.blockPublicPolicy');
        BlockPublicAccessIgnorePublicAcls := jResp.IntOf('findings[i].resource.s3BucketDetails[j].publicAccess.permissionConfiguration.bucketLevelPermissions.blockPublicAccess.ignorePublicAcls');
        BlockPublicAccessRestrictPublicBuckets := jResp.IntOf('findings[i].resource.s3BucketDetails[j].publicAccess.permissionConfiguration.bucketLevelPermissions.blockPublicAccess.restrictPublicBuckets');
        BucketPolicyAllowsPublicReadAccess := jResp.IntOf('findings[i].resource.s3BucketDetails[j].publicAccess.permissionConfiguration.bucketLevelPermissions.bucketPolicy.allowsPublicReadAccess');
        BucketPolicyAllowsPublicWriteAccess := jResp.IntOf('findings[i].resource.s3BucketDetails[j].publicAccess.permissionConfiguration.bucketLevelPermissions.bucketPolicy.allowsPublicWriteAccess');
        v_type := jResp.StringOf('findings[i].resource.s3BucketDetails[j].type');
        k := 0;
        count_k := jResp.SizeOfArray('findings[i].resource.s3BucketDetails[j].tags');
        while k < count_k do
          begin
            jResp.K := k;
            key := jResp.StringOf('findings[i].resource.s3BucketDetails[j].tags[k].key');
            value := jResp.StringOf('findings[i].resource.s3BucketDetails[j].tags[k].value');
            k := k + 1;
          end;

        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('findings[i].service.action.kubernetesApiCallAction.sourceIps');
    while j < count_j do
      begin
        jResp.J := j;
        strVal := jResp.StringOf('findings[i].service.action.kubernetesApiCallAction.sourceIps[j]');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('findings[i].service.action.portProbeAction.portProbeDetails');
    while j < count_j do
      begin
        jResp.J := j;
        localIpDetailsIpAddressV4 := jResp.StringOf('findings[i].service.action.portProbeAction.portProbeDetails[j].localIpDetails.ipAddressV4');
        localPortDetailsPort := jResp.IntOf('findings[i].service.action.portProbeAction.portProbeDetails[j].localPortDetails.port');
        localPortDetailsPortName := jResp.StringOf('findings[i].service.action.portProbeAction.portProbeDetails[j].localPortDetails.portName');
        CityCityName := jResp.StringOf('findings[i].service.action.portProbeAction.portProbeDetails[j].remoteIpDetails.city.cityName');
        CountryCountryCode := jResp.StringOf('findings[i].service.action.portProbeAction.portProbeDetails[j].remoteIpDetails.country.countryCode');
        CountryCountryName := jResp.StringOf('findings[i].service.action.portProbeAction.portProbeDetails[j].remoteIpDetails.country.countryName');
        GeoLocationLat := jResp.IntOf('findings[i].service.action.portProbeAction.portProbeDetails[j].remoteIpDetails.geoLocation.lat');
        GeoLocationLon := jResp.IntOf('findings[i].service.action.portProbeAction.portProbeDetails[j].remoteIpDetails.geoLocation.lon');
        remoteIpDetailsIpAddressV4 := jResp.StringOf('findings[i].service.action.portProbeAction.portProbeDetails[j].remoteIpDetails.ipAddressV4');
        OrganizationAsn := jResp.StringOf('findings[i].service.action.portProbeAction.portProbeDetails[j].remoteIpDetails.organization.asn');
        OrganizationAsnOrg := jResp.StringOf('findings[i].service.action.portProbeAction.portProbeDetails[j].remoteIpDetails.organization.asnOrg');
        OrganizationIsp := jResp.StringOf('findings[i].service.action.portProbeAction.portProbeDetails[j].remoteIpDetails.organization.isp');
        OrganizationOrg := jResp.StringOf('findings[i].service.action.portProbeAction.portProbeDetails[j].remoteIpDetails.organization.org');
        j := j + 1;
      end;

    j := 0;
    count_j := jResp.SizeOfArray('findings[i].service.evidence.threatIntelligenceDetails');
    while j < count_j do
      begin
        jResp.J := j;
        threatListName := jResp.StringOf('findings[i].service.evidence.threatIntelligenceDetails[j].threatListName');
        k := 0;
        count_k := jResp.SizeOfArray('findings[i].service.evidence.threatIntelligenceDetails[j].threatNames');
        while k < count_k do
          begin
            jResp.K := k;
            strVal := jResp.StringOf('findings[i].service.evidence.threatIntelligenceDetails[j].threatNames[k]');
            k := k + 1;
          end;

        j := j + 1;
      end;

    i := i + 1;
  end;

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

// {
//   "findings": [
//     {
//       "accountId": "string",
//       "arn": "string",
//       "confidence": number,
//       "createdAt": "string",
//       "description": "string",
//       "id": "string",
//       "partition": "string",
//       "region": "string",
//       "resource": {
//         "accessKeyDetails": {
//           "accessKeyId": "string",
//           "principalId": "string",
//           "userName": "string",
//           "userType": "string"
//         },
//         "eksClusterDetails": {
//           "arn": "string",
//           "createdAt": number,
//           "name": "string",
//           "status": "string",
//           "tags": [
//             {
//               "key": "string",
//               "value": "string"
//             }
//           ],
//           "vpcId": "string"
//         },
//         "instanceDetails": {
//           "availabilityZone": "string",
//           "iamInstanceProfile": {
//             "arn": "string",
//             "id": "string"
//           },
//           "imageDescription": "string",
//           "imageId": "string",
//           "instanceId": "string",
//           "instanceState": "string",
//           "instanceType": "string",
//           "launchTime": "string",
//           "networkInterfaces": [
//             {
//               "ipv6Addresses": [
//                 "string"
//               ],
//               "networkInterfaceId": "string",
//               "privateDnsName": "string",
//               "privateIpAddress": "string",
//               "privateIpAddresses": [
//                 {
//                   "privateDnsName": "string",
//                   "privateIpAddress": "string"
//                 }
//               ],
//               "publicDnsName": "string",
//               "publicIp": "string",
//               "securityGroups": [
//                 {
//                   "groupId": "string",
//                   "groupName": "string"
//                 }
//               ],
//               "subnetId": "string",
//               "vpcId": "string"
//             }
//           ],
//           "outpostArn": "string",
//           "platform": "string",
//           "productCodes": [
//             {
//               "code": "string",
//               "productType": "string"
//             }
//           ],
//           "tags": [
//             {
//               "key": "string",
//               "value": "string"
//             }
//           ]
//         },
//         "kubernetesDetails": {
//           "kubernetesUserDetails": {
//             "groups": [
//               "string"
//             ],
//             "uid": "string",
//             "username": "string"
//           },
//           "kubernetesWorkloadDetails": {
//             "containers": [
//               {
//                 "containerRuntime": "string",
//                 "id": "string",
//                 "image": "string",
//                 "imagePrefix": "string",
//                 "name": "string",
//                 "securityContext": {
//                   "privileged": boolean
//                 },
//                 "volumeMounts": [
//                   {
//                     "mountPath": "string",
//                     "name": "string"
//                   }
//                 ]
//               }
//             ],
//             "hostNetwork": boolean,
//             "name": "string",
//             "namespace": "string",
//             "type": "string",
//             "uid": "string",
//             "volumes": [
//               {
//                 "hostPath": {
//                   "path": "string"
//                 },
//                 "name": "string"
//               }
//             ]
//           }
//         },
//         "resourceType": "string",
//         "s3BucketDetails": [
//           {
//             "arn": "string",
//             "createdAt": number,
//             "defaultServerSideEncryption": {
//               "encryptionType": "string",
//               "kmsMasterKeyArn": "string"
//             },
//             "name": "string",
//             "owner": {
//               "id": "string"
//             },
//             "publicAccess": {
//               "effectivePermission": "string",
//               "permissionConfiguration": {
//                 "accountLevelPermissions": {
//                   "blockPublicAccess": {
//                     "blockPublicAcls": boolean,
//                     "blockPublicPolicy": boolean,
//                     "ignorePublicAcls": boolean,
//                     "restrictPublicBuckets": boolean
//                   }
//                 },
//                 "bucketLevelPermissions": {
//                   "accessControlList": {
//                     "allowsPublicReadAccess": boolean,
//                     "allowsPublicWriteAccess": boolean
//                   },
//                   "blockPublicAccess": {
//                     "blockPublicAcls": boolean,
//                     "blockPublicPolicy": boolean,
//                     "ignorePublicAcls": boolean,
//                     "restrictPublicBuckets": boolean
//                   },
//                   "bucketPolicy": {
//                     "allowsPublicReadAccess": boolean,
//                     "allowsPublicWriteAccess": boolean
//                   }
//                 }
//               }
//             },
//             "tags": [
//               {
//                 "key": "string",
//                 "value": "string"
//               }
//             ],
//             "type": "string"
//           }
//         ]
//       },
//       "schemaVersion": "string",
//       "service": {
//         "action": {
//           "actionType": "string",
//           "awsApiCallAction": {
//             "api": "string",
//             "callerType": "string",
//             "domainDetails": {
//               "domain": "string"
//             },
//             "errorCode": "string",
//             "remoteAccountDetails": {
//               "accountId": "string",
//               "affiliated": boolean
//             },
//             "remoteIpDetails": {
//               "city": {
//                 "cityName": "string"
//               },
//               "country": {
//                 "countryCode": "string",
//                 "countryName": "string"
//               },
//               "geoLocation": {
//                 "lat": number,
//                 "lon": number
//               },
//               "ipAddressV4": "string",
//               "organization": {
//                 "asn": "string",
//                 "asnOrg": "string",
//                 "isp": "string",
//                 "org": "string"
//               }
//             },
//             "serviceName": "string",
//             "userAgent": "string"
//           },
//           "dnsRequestAction": {
//             "domain": "string"
//           },
//           "kubernetesApiCallAction": {
//             "parameters": "string",
//             "remoteIpDetails": {
//               "city": {
//                 "cityName": "string"
//               },
//               "country": {
//                 "countryCode": "string",
//                 "countryName": "string"
//               },
//               "geoLocation": {
//                 "lat": number,
//                 "lon": number
//               },
//               "ipAddressV4": "string",
//               "organization": {
//                 "asn": "string",
//                 "asnOrg": "string",
//                 "isp": "string",
//                 "org": "string"
//               }
//             },
//             "requestUri": "string",
//             "sourceIps": [
//               "string"
//             ],
//             "statusCode": number,
//             "userAgent": "string",
//             "verb": "string"
//           },
//           "networkConnectionAction": {
//             "blocked": boolean,
//             "connectionDirection": "string",
//             "localIpDetails": {
//               "ipAddressV4": "string"
//             },
//             "localPortDetails": {
//               "port": number,
//               "portName": "string"
//             },
//             "protocol": "string",
//             "remoteIpDetails": {
//               "city": {
//                 "cityName": "string"
//               },
//               "country": {
//                 "countryCode": "string",
//                 "countryName": "string"
//               },
//               "geoLocation": {
//                 "lat": number,
//                 "lon": number
//               },
//               "ipAddressV4": "string",
//               "organization": {
//                 "asn": "string",
//                 "asnOrg": "string",
//                 "isp": "string",
//                 "org": "string"
//               }
//             },
//             "remotePortDetails": {
//               "port": number,
//               "portName": "string"
//             }
//           },
//           "portProbeAction": {
//             "blocked": boolean,
//             "portProbeDetails": [
//               {
//                 "localIpDetails": {
//                   "ipAddressV4": "string"
//                 },
//                 "localPortDetails": {
//                   "port": number,
//                   "portName": "string"
//                 },
//                 "remoteIpDetails": {
//                   "city": {
//                     "cityName": "string"
//                   },
//                   "country": {
//                     "countryCode": "string",
//                     "countryName": "string"
//                   },
//                   "geoLocation": {
//                     "lat": number,
//                     "lon": number
//                   },
//                   "ipAddressV4": "string",
//                   "organization": {
//                     "asn": "string",
//                     "asnOrg": "string",
//                     "isp": "string",
//                     "org": "string"
//                   }
//                 }
//               }
//             ]
//           }
//         },
//         "archived": boolean,
//         "count": number,
//         "detectorId": "string",
//         "eventFirstSeen": "string",
//         "eventLastSeen": "string",
//         "evidence": {
//           "threatIntelligenceDetails": [
//             {
//               "threatListName": "string",
//               "threatNames": [
//                 "string"
//               ]
//             }
//           ]
//         },
//         "resourceRole": "string",
//         "serviceName": "string",
//         "userFeedback": "string"
//       },
//       "severity": number,
//       "title": "string",
//       "type": "string",
//       "updatedAt": "string"
//     }
//   ]
// }