Processing Application Control Approval Requests through API

29 min. readlast update: 06.23.2026

This article encompasses a base for the API calls that are related to processing Application Control Approval Requests directly through ThreatLocker PortalAPI endpoints.

 

Be sure to input the instance your organization exists on for each call. This is indicated with the "INSTANCE" text in each endpoint. Linked here is a KB to find your instance:

Locating Your Organization's Instance | ThreatLocker Help Center

 

For more in-depth analysis/usage of each of the endpoints, be sure to check out the other API documentation articles available here:

API Documentation | ThreatLocker Help Center

 

Getting Pending Approval Requests

ApprovalRequestGetByParameters

https://portalapi.INSTANCE.threatlocker.com/portalapi/ApprovalRequest/ApprovalRequestGetByParameters

 

To get a list of the organizationIds available, call the OrganizationGetChildrenIdsAndName PortalAPI endpoint using the following URL, replacing the INSTANCE variable accordingly:

https://portalapi.INSTANCE.threatlocker.com/portalapi/Organization/OrganizationGetChildrenIdsAndName

 

  • Method: POST
  • Description: This API, using one of the request bodies below, returns a list of all pending requests for your organization(s), including those from Application Control, Elevation Control, and Storage Control. When managing a parent organization, you have the option to view all pending requests for all your child organizations, including grandchild organizations. This is demonstrated below by setting the showChildOrganizations field to true in the second request body. To view just a child organization's Approval Requests, use the managedOrganizationId header as described below. Any valid integer can be entered for the pageNumber and pageSize fields, and it will be returned in the selected format. For instance, if “pageNumber”: 1 and “pageSize”: 2, 2 entries will be returned per page, and the first two requests will be returned.
  • Permission Requirements
    • Assign any one of the following permissions:
      • Approve for Entire Organization
      • Approve for Entire Organization (Hash Only)
      • Approve for Group
      • Approve for Group (Hash Only)
      • Approve for Single Computer
      • Approve for Single Computer (Application Only)
      • Approve for Single Computer (Hash Only)
      • Elevation Administrator
      • View Approvals
Optional header: managedOrganizationId header

Expects: organizationId of the organization as <GUID> in format: "00000000-0000-0000-0000-000000000000"

Request body: Return pending Approval Requests for only the currently managed organization

{
    "isAscending": false,
    "orderBy": "dateTime",
    "pageNumber": 1,
    "pageSize": 100,
    "showChildOrganizations": false,
    "showCurrentTierOnly": false,
    "statusId": 1
}

Request body: Return pending Approval Requests for the currently managed organization AND any child and grandchild organizations

{
    "isAscending": false,
    "orderBy": "dateTime",
    "pageNumber": 1,
    "pageSize": 100,
    "showChildOrganizations": true,
    "showCurrentTierOnly": false,
    "statusId": 1
}

Response body: Sample response body returned from one Approval Request. Some fields have been replaced with template data, but these fields are expected to contain valid data.

{
    "statusIdEscalatedToMSP": 13,
    "statusIdEscalatedByCustomer": 17,
    "masterOrganizationId": "00000000-0000-0000-0000-000000000000",
    "approvedBy": "",
    "approvalRequestId": "00000000-0000-0000-0000-000000000000",
    "dateTime": "YYYY-MM-DDTHH:MM:SSZ",
    "path": "<String>",
    "hash": null,
    "username": "<String>",
    "hostname": "<String>",
    "statusId": 1,
    "computerId": "00000000-0000-0000-0000-000000000000",
    "organizationName": "<String>",
    "json": null,
    "ticketId": "",
    "requestor": "",
    "requestorReason": "",
    "requestorEmailAddress": "",
    "comments": "",
    "actionDate": null,
    "organizationId": "00000000-0000-0000-0000-000000000000",
    "multiLevelApprovalRequestId": null,
    "approvalNumber": 0,
    "approvedByTierLevel": 0,
    "tempPolicyId": null,
    "policyId": null,
    "tempApplicationId": null,
    "applicationId": null,
    "multiLevelApprovalStatusId": 1,
    "initialApprovalTierLevel": 0,
    "approvalCount": 0,
    "pendingTierLevel": 0,
    "hasPendingApprovalRequest": false,
    "ipAddress": null,
    "isAssigned": false,
    "assigneeUserId": null,
    "threatLockerDataCenterId": null,
    "instanceName": null,
    "assigneeUsername": "",
    "assigneeFirstName": "",
    "assigneeLastname": "",
    "threatLockerActionDto": {
        "fullPath": "<String>",
        "policyId": "00000000-0000-0000-0000-000000000000",
        "username": "<String>",
        "actionId": 3,
        "hash": "<String>",
        "processName": "<String>",
        "certs": [],
        "applicationId": null,
        "datetime": "YYYY-MM-DDTHH:MM:SSZ",
        "logAction": true,
        "serialNumber": "<String>",
        "deviceType": "<String>",
        "actionType": "<String>",
        "size": <Integer>,
        "processId": 0,
        "ringFence": false,
        "policyName": "<String>",
        "applicationName": "",
        "encryptionStatus": <Integer>,
        "installedBy": [
            "<String>"
        ],
        "monitorOnly": false,
        "notes": "<String>",
        "sha256": "<String>",
        "ringfencePolicyId": null,
        "remotePresence": false,
        "organizationId": null,
        "hostname": null,
        "computerId": null,
        "manufacturer": "",
        "osType": <Integer>,
        "destinationIP": null,
        "domainName": "",
        "organizationName": null
    },
    "notes": null,
    "signature": null,
    "tlInstructions": null,
    "suggestCustomRule": null,
    "authorizeForPermit": false,
    "portalApiUrl": "https://portalapi.INSTANCE.threatlocker.com/",
    "cyberHeroManagementConfigured": false,
    "maxTriggeredStartDate": null,
    "isEscalatedByCyberHero": false,
    "isEscalatedByCustomer": false,
    "ticketApprovalManager": null,
    "showMfaChallenge": false,
    "showMfaRegistration": false,
    "linkedMfaUser": null,
    "serialNumber": null,
    "approvalRequestTimerDto": null,
    "canRequestNewBuiltIn": false,
    "isAssigneeLoggedIntoMaster": false,
    "retrievedAssigneeUsername": false,
    "count": 0
}

 

Checking for Matching Applications

 

Before approving a ThreatLocker Built-In application from an Approval Request, ensure that the file being permitted matches that of the application you believe the request originated from. There are cases where a requested file can be a common DLL or other configuration or system file that can be used by multiple applications. This causes the file to match into multiple applications which are potentially unrelated to the original Approval Request. When applying a ThreatLocker Built-In, the entire Built-In application is permitted.

 

ApplicationGetMatchingList

https://portalapi.INSTANCE.threatlocker.com/portalapi/Application/ApplicationGetMatchingList

  • Method: POST
  • Description: This API returns a list of matching applications when provided with fields that uniquely identify the requested file, such as its ThreatLocker hash value, SHA256 hash value, and/or certificate name. ThreatLocker recommends entering at least one identifying field per call. Entering multiple fields that do not all align to the same unique file/Approval Request may return inaccurate matching applications. Ensure that all fields used contain information that pertains only to the requested file. If the Approval Request you are evaluating is from a child organization, use the managedOrganizationId header and set it to the organization that contains the request, as described below. The request body below expects each field to match the fields returned by the requested file. The following options can be used for the OSType in the body below:
    • Windows = 1
    • MAC = 2
    • Linux = 3
    • Windows XP = 5
  • Permission Requirements
    • Assign any one of the following permissions:
      • Approve for Entire Organization
      • Approve for Entire Organization (Hash Only)
      • Approve for Group
      • Approve for Group (Hash Only)
      • Approve for Single Computer
      • Approve for Single Computer (Application Only)
      • Approve for Single Computer (Hash Only)
      • View Application Control Applications
      • View Approvals
Optional header: managedOrganizationId header

Expects: organizationId of the organization as <GUID> in format: "00000000-0000-0000-0000-000000000000"

Request Body: Return a list of any matching applications

{
    "hash": "<String>",
    "sha256": "<String>",
    "path": "<String>",
    "processPath": "<String>",
    "certs": [
        {
            "sha": "<SHA256 of certificate>",
            "subject": "<certificateName>",
            "validCert": "<Boolean>"
        },
        {
            "sha": "<SHA256 of certificate>",
            "subject": "<certificateName>",
            "validCert": "<Boolean>"
        }
    ],
    "createdBys": [
        "<String>",
        "<String>"
    ],
    "osType": <Integer>
}

Response body: Response body returned when two matching applications are found. Some fields have been replaced with template data, but these fields are expected to contain valid data.

{
    "matchingApplications": [
        {
            "name": "<String>",
            "applicationName": "<String>",
            "applicationId": "00000000-0000-0000-0000-000000000000",
            "organizationId": "00000000-0000-0000-0000-000000000000",
            "organizationName": "<String>",
            "osType": <Integer>,
            "suggestedPolicyId": null,
            "status": <Integer>,
            "isMaintained": false,
            "researchApplicationId": null
        },
        {
            "name": "<String>",
            "applicationName": "<String>",
            "applicationId": "00000000-0000-0000-0000-000000000000",
            "organizationId": "00000000-0000-0000-0000-000000000000,
            "organizationName": "<String>",
            "osType": <Integer>,
            "suggestedPolicyId": null,
            "status": <Integer>,
            "isMaintained": false,
            "researchApplicationId": null
        }
    ],
    "hasMatching": true
}

 

Getting custom applications to add the requested file/file rules into

ApplicationGetListForAddToApplication

https://portalapi.INSTANCE.threatlocker.com/portalapi/Application/ ApplicationGetListForAddToApplication 

  • Method: GET
  • Description: This API returns all applications available for use with the Approval Request, including parent organization applications when viewing a request from a child organization. Parent applications use a different naming convention, shown in the name field as "parentOrganizationName\\parentOrganizationApplicationName". The applicationName field will return only the application name, without any parent nomenclature. If the Approval Request you are evaluating is from a child organization, use the managedOrganizationId header and set it to the organization that contains the request, as described below. To search for an available application by name, enter any text into the searchText field, as shown below. The osType parameter should match the osType of the computer that made the request when searching for available applications to use with the request. The following options can be used for the OSType below:
    • Windows = 1
    • MAC = 2
    • Linux = 3
    • Windows XP = 5
  • Permission Requirements
    • Assign any one of the following permissions:
      • Edit Application Control Applications
      • View Application Control Applications
Optional header: managedOrganizationId header

Expects: organizationId of the organization as <GUID> in format: "00000000-0000-0000-0000-000000000000"

Request URL: Return any Windows applications (osType = 1) that contain the text App (searchText = App)

https://portalapi.INSTANCE.threatlocker.com/portalapi/Application/ApplicationGetListForAddToApplication?osType=1&searchText=App

Response body: Response body returned from an available application. Some fields have been replaced with template data, but these fields are expected to contain valid data.

{
    "name": "<String>",
    "applicationName": "<String>",
    "applicationId": "00000000-0000-0000-0000-000000000000",
    "organizationId": "00000000-0000-0000-0000-000000000000",
    "organizationName": "<String>",
    "osType": <Integer>,
    "suggestedPolicyId": null,
    "status": 0,
    "isMaintained": false,
    "researchApplicationId": null
}

 

Getting an Application to use when using a Maintenance Mode

ApplicationGetForMaintenanceMode

https://portalapi.INSTANCE.threatlocker.com/portalapi/Application/ApplicationGetForMaintenanceMode

  • Method: GET
  • Description: This API returns all applications available for use with a Maintenance Mode, including parent-organization applications when viewing a request from a child organization. When processing Approval Requests, you can select an existing application and use a Maintenance Mode. With the selected application, the Maintenance Mode will temporarily capture or monitor files that are installed and/or executed in association with the initially requested file. Parent applications use a different naming convention, shown in the label field as "parentOrganizationName\\parentOrganizationApplicationName". If the Approval Request you are evaluating is from a child organization, use the managedOrganizationId header and set it to the organization that contains the request, as described below. The osType parameter should match the osType of the computer that made the request when searching for available applications to use. The following options can be used for the OSType below:
    • Windows = 1
    • MAC = 2
    • Linux = 3
    • Windows XP = 5
  • Permission Requirements
    • Assign this permission:
      • Edit Application Control Applications
    • AND Assign any one of the following permissions:
      • Edit Computers
      • View Computers
    • AND Assign any one of the following permissions:
      • Manage All Maintenance Modes
      • Manage Application Control Installation Mode
      • Manage Application Control Installation Mode (Time Restricted)
      • Manage Application Control Learning Mode
      • Manage Application Control Learning Mode (Time Restricted)
      • Manage Application Control Legacy Installation Mode
      • Manage Application Control Legacy Installation Mode (Time Restricted)
Optional header: managedOrganizationId header

Expects: organizationId of the organization as <GUID> in format: "00000000-0000-0000-0000-000000000000"

Request URL: Return any Windows applications (osType = 1)

https://portalapi.INSTANCE.threatlocker.com/portalapi/Application/ApplicationGetForMaintenanceMode?osType=1

Response body: Response body returned from an available application. Some fields have been replaced with template data, but these fields are expected to contain valid data.

{
    "label": "<String>",
    "value": "00000000-0000-0000-0000-000000000000",
    "numericValue": null,
    "entityType": null,
    "parentId": null,
    "disabled": false,
    "tooltip": null,
    "featureConfigurationIds": [],
    "isSupported": null,
    "extendedProperties": null
}

 

Gathering Additional Information (Optional)

ApplicationGetResearchDetailsById

https://portalapi.INSTANCE.threatlocker.com/portalapi/Application/ApplicationGetResearchDetailsById

  • Method: GET
  • Description: This API returns all research data made available by the ThreatLocker Research Team based on the applicationId provided. This research data includes a product description, potential risks associated with the application, and a mitigation strategy to limit those risks in your organization(s). The applicationId parameter determines which application's research information will be returned, as shown below. Only one applicationId can be entered at a time.
  • Permission Requirements
    • Assign any one of the following permissions:
      • Approve for Entire Organization
      • Approve for Entire Organization (Hash Only)
      • Approve for Group
      • Approve for Group (Hash Only)
      • Approve for Single Computer
      • Approve for Single Computer (Application Only)
      • Approve for Single Computer (Hash Only)
      • Edit Application Control Applications
      • View Application Control Applications
      • View Approvals
Request URL: Return the research information from the Adobe Acrobat (Built-In)

/portalapi/Application/ApplicationGetResearchDetailsById?applicationId=4cc1729d-8727-43de-b379-f3df4fe6055a

Response body: Response body returned when supplying the applicationId for the Adobe Acrobat (Built-In)

{
    "researchApplicationId": "6c9b00c3-20d5-42b3-b44a-8c2e186e208a",
    "productName": "Adobe Acrobat",
    "clientApplicationName": "Adobe Acrobat (Built-In)",
    "productDescription": "Adobe Acrobat is used to view, create, print, and manage PDF (Portable Document Format) files.",
    "clientDescription": "",
    "osType": 1,
    "remediationText": "Evaluate the need for this software. If it is required for business use, limit access to high-risk applications, files, and the ability to reach out to the internet.",
    "potentialRiskStrategyText": "Vulnerabilities may result in unauthorized access to sensitive documents, leading to potential data breaches, intellectual property theft, or manipulation of critical documents.",
    "reviewRating": 4,
    "concernRating": 3,
    "businessRating": 6,
    "countriesWhereCodeCompiled": [
        {
            "name": "India",
            "code": "IN",
            "tooltip": "Development Influence: India"
        },
        {
            "name": "United States",
            "code": "US",
            "tooltip": "Company Influence: United States"
        }
    ],
    "categories": [
        "PDF Software"
    ],
    "accessLevels": [
        {
            "displayName": "Applications",
            "value": "RF applications",
            "isProtected": true,
            "orderBy": 1
        },
        {
            "displayName": "File",
            "value": "RF File Access",
            "isProtected": false,
            "orderBy": 2
        },
        {
            "displayName": "Internet",
            "value": "RF Internet",
            "isProtected": false,
            "orderBy": 3
        },
        {
            "displayName": "Registry",
            "value": "RF Registry",
            "isProtected": false,
            "orderBy": 4
        }
    ]
}

 

Approving the Request

ApprovalRequestGetPermitApplicationById

https://portalapi.INSTANCE.threatlocker.com/portalapi/ApprovalRequest/ApprovalRequestGetPermitApplicationById

  • Method: GET
  • Description: This API returns all the details/Ids of an Approval Request, including the formatted JSON field that is needed to use the ApprovalRequestPermitApplication endpoint below. If the Approval Request you are evaluating is from a child organization, use the managedOrganizationId header and set it to the organization that contains the request, as described below.
  • Permission Requirements
    • Assign any one of the following permissions:
      • Approve for Entire Organization
      • Approve for Entire Organization (Hash Only)
      • Approve for Group
      • Approve for Group (Hash Only)
      • Approve for Single Computer
      • Approve for Single Computer (Application Only)
      • Approve for Single Computer (Hash Only)
      • View Approvals
Optional header: managedOrganizationId Header

Expects: organizationId of the organization as <GUID> in format: "00000000-0000-0000-0000-000000000000"

Request URL: Return the Approval Request details/IDs when the approvalRequestId (approvalRequestId=00000000-0000-0000-0000-000000000000) parameter is supplied with a valid approvalRequestId

https://portalapi.INSTANCE.threatlocker.com/portalapi/ApprovalRequest/ApprovalRequestGetPermitApplicationById?approvalRequestId=00000000-0000-0000-0000-000000000000

Response body: Response body when supplying a valid approvalRequestId from a child organization's Approval Request. Some fields have been replaced with template data, but these fields are expected to contain valid data.
{
    "computerId": "00000000-0000-0000-0000-000000000000",
    "computerGroupId": "00000000-0000-0000-0000-000000000000",
    "organizationId": "00000000-0000-0000-0000-000000000000",
    "organizationIds": [
        "00000000-0000-0000-0000-000000000000"
    ],
    "appliesToId": null,
    "appliesToOrganizationId": null,
    "osType": <Integer>,
    "userInstance": "<String>",
    "approvalRequest": {
        "statusIdEscalatedToMSP": 0,
        "statusIdEscalatedByCustomer": 0,
        "masterOrganizationId": null,
        "approvedBy": "",
        "approvalRequestId": "00000000-0000-0000-0000-000000000000",
        "dateTime": "YYYY-MM-DDTHH:MM:SSZ",
        "path": "<String>",
        "hash": "<String>",
        "username": "<String>",
        "hostname": "<String>",
        "statusId": 1,
        "computerId": "00000000-0000-0000-0000-000000000000",
        "organizationName": "<String>",
        "json": "<String>",
        "ticketId": "",
        "requestor": "",
        "requestorReason": "<String>",
        "requestorEmailAddress": "",
        "comments": "",
        "actionDate": null,
        "organizationId": "00000000-0000-0000-0000-000000000000",
        "multiLevelApprovalRequestId": null,
        "approvalNumber": 0,
        "approvedByTierLevel": 0,
        "tempPolicyId": null,
        "policyId": null,
        "tempApplicationId": null,
        "applicationId": null,
        "multiLevelApprovalStatusId": 0,
        "initialApprovalTierLevel": 0,
        "approvalCount": 0,
        "pendingTierLevel": 0,
        "hasPendingApprovalRequest": false,
        "ipAddress": null,
        "isAssigned": false,
        "assigneeUserId": null,
        "threatLockerDataCenterId": null,
        "instanceName": null,
        "assigneeUsername": "",
        "assigneeFirstName": null,
        "assigneeLastname": null,
        "threatLockerActionDto": {
            "fullPath": "<String>",
            "policyId": "00000000-0000-0000-0000-000000000000",
            "username": "<String>",
            "actionId": 3,
            "hash": "<String>",
            "processName": "<String>",
            "certs": [],
            "applicationId": null,
            "datetime": "YYYY-MM-DDTHH:MM:SSZ",
            "logAction": true,
            "serialNumber": "<String>",
            "deviceType": "<String>",
            "actionType": "<String>",
            "size": <Integer>,
            "processId": 0,
            "ringFence": false,
            "policyName": "<String>",
            "applicationName": "",
            "encryptionStatus": <Integer>,
            "installedBy": [
                "<String>"
            ],
            "monitorOnly": false,
            "notes": "<String>",
            "sha256": "<String>",
            "ringfencePolicyId": null,
            "remotePresence": false,
            "organizationId": null,
            "hostname": null,
            "computerId": null,
            "manufacturer": "",
            "osType": <Integer>,
            "destinationIP": null,
            "domainName": "",
            "organizationName": null
        },
        "notes": "",
        "signature": "[]",
        "tlInstructions": null,
        "suggestCustomRule": null,
        "authorizeForPermit": false,
        "portalApiUrl": null,
        "cyberHeroManagementConfigured": false,
        "maxTriggeredStartDate": null,
        "isEscalatedByCyberHero": false,
        "isEscalatedByCustomer": false,
        "ticketApprovalManager": "",
        "showMfaChallenge": false,
        "showMfaRegistration": false,
        "linkedMfaUser": null,
        "serialNumber": null,
        "approvalRequestTimerDto": {
            "approvalRequestId": "<String>",
            "requestDate": "YYYY-MM-DDTHH:MM:SSZ",
            "assignedDate": null,
            "escalatedDate": null,
            "returnedDate": null,
            "reassignedDate": null,
            "actionedDate": null,
            "totalTimeInSeconds": 0
        },
        "canRequestNewBuiltIn": false,
        "isAssigneeLoggedIntoMaster": false,
        "retrievedAssigneeUsername": true,
        "count": 0
    },
    "isFromApproval": true,
    "actionLog": {
        "actionLogId": 0,
        "eActionLogId": null,
        "organizationId": null,
        "computerId": null,
        "dateTime": null,
        "dateTimeImported": null,
        "organizationName": null,
        "hostname": null,
        "username": null,
        "fullPath": null,
        "policyName": "<String>",
        "actionType": null,
        "actionTypeId": 0,
        "actionId": 0,
        "action": null,
        "isMonitorMode": false,
        "monitorMode": null,
        "learningModeEndDate": null,
        "policyId": "00000000-0000-0000-0000-000000000000",
        "policyLocation": "<String>",
        "policyOrganizationId": "00000000-0000-0000-0000-000000000000",
        "processId": <Integer>,
        "processPath": null,
        "hash": null,
        "createdByProcess": null,
        "data": null,
        "remotePresence": false,
        "remotePresenceText": null,
        "remotePresenceThreatLockerDetected": false,
        "deviceType": null,
        "cert": null,
        "certs": null,
        "certExists": false,
        "certificates": null,
        "certText": null,
        "organizationParents": [],
        "applicationOrganizationId": null,
        "applicationIsBuiltIn": null,
        "applicationId": null,
        "applicationName": null,
        "notes": null,
        "serialNumber": null,
        "encryption": 0,
        "size": 0,
        "sha256Hash": null,
        "policyExists": true,
        "policyEnabled": true,
        "storagePolicyExists": false,
        "nacPolicyExists": false,
        "secureNetworkPolicyExists": false,
        "twPolicyExists": false,
        "webControlPolicyExists": false,
        "optionToRequest": false,
        "allowPermitVendorButton": false,
        "effectiveAction": null,
        "encryptionStatus": null,
        "reportMissing": false,
        "virusTotalCheckName": null,
        "virusTotalCheckArgument": null,
        "osType": <Integer>,
        "isExtension": false,
        "edgeStoreUrl": null,
        "chromeStoreUrl": null,
        "firefoxStoreUrl": null,
        "actionLogCreatedByProcesses": null,
        "totalCount": 0,
        "lastSortValue": 0,
        "networkDirection": 0,
        "sourceIPAddress": null,
        "destinationIPAddress": null,
        "groupByCount": 0,
        "destinationPort": null,
        "batchId": null,
        "isProtectedProcess": false,
        "memoryBytes": 0,
        "processName": null,
        "parentProcessId": 0,
        "parentProcessName": null,
        "hasViewComputerPermission": false,
        "allowFileUpload": false,
        "canViewOnSystemLookup": false,
        "systemLookupUrl": null,
        "hasPolicyData": true,
        "threatLockerItem": null,
        "integrationTypeId": null,
        "isCloudLog": false,
        "isCloudActionType": false,
        "threatSeverityLevel": null,
        "engineRatings": null,
        "isVirusTotalUnavailable": false,
        "deleteFileRequestSent": false,
        "isAccessDevice": false
    },
    "isFromActionLog": false,
    "actionType": "<String>",
    "isElevationRequest": false,
    "isExtensionRequest": false,
    "edgeStoreUrl": null,
    "chromeStoreUrl": null,
    "canViewOnSystemLookup": false,
    "systemLookupUrl": null,
    "canViewVirusTotal": true,
    "virusTotalUrl": "<String>",
    "fileHistoryChecked": false,
    "suggestCustomRule": null,
    "fileDetails": {
        "fullPath": "<String>",
        "processPath": "<String>",
        "hash": "<String>",
        "certificates": [
            {
                "sha": "",
                "subject": "",
                "validCert": true
            }
        ],
        "createdByProcesses": [
            "<String>"
        ],
        "filename": "<String>",
        "sha256": "<String>",
        "date": "YYYY-MM-DDTHH:MM:SSZ",
        "originalHostname": "<String>",
        "hostname": "<String>",
        "username": "<String>",
        "organizationName": "<String>",
        "policyName": null,
        "applicationName": null,
        "requestorReason": "<String>",
        "approvalStatus": "Pending",
        "approvalBy": "",
        "size": <Integer>
    },
    "matchingApplications": {
        "hasMatchingApplication": false,
        "useMatchingApplication": false,
        "matchingApplication": {
            "name": null,
            "applicationName": null,
            "applicationId": null,
            "organizationId": null,
            "organizationName": null,
            "osType": 0,
            "suggestedPolicyId": null,
            "status": 0,
            "isMaintained": false,
            "researchApplicationId": null
        },
        "useExistingApplication": false,
        "existingApplication": {
            "name": null,
            "applicationName": null,
            "applicationId": null,
            "organizationId": null,
            "organizationName": null,
            "osType": 0,
            "suggestedPolicyId": null,
            "status": 0,
            "isMaintained": false,
            "researchApplicationId": null
        },
        "useNewApplication": true,
        "newApplicationName": null
    },
    "policyConditions": {
        "useExistingPolicy": false,
        "createManualPolicy": false,
        "manualOptions": [],
        "ruleId": 0,
        "certSubjects": [],
        "createdByProcesses": [
            "<String>"
        ],
        "disableProtection": false,
        "includedAdditionalFiles": []
    },
    "policyExpirationDate": null,
    "ringfencingOptions": {
        "hideCustomRules": true,
        "restrictApplicationSpawning": false,
        "restrictRegistryAccess": false,
        "restrictFileAccess": false,
        "restrictNetworkAccess": false,
        "restrictApplication": false,
        "rfFilePolicy": [],
        "rfNetworkPolicy": [],
        "rfRegistryPolicy": [],
        "rfAssociatedApplicationPolicy": []
    },
    "networkExclusions": [],
    "ringfenceActionId": 0,
    "isRingfenced": false,
    "hasRingfencingAsProduct": true,
    "hasElevation": true,
    "organizationHasElevation": true,
    "elevationStatus": 0,
    "elevationExpiration": 0,
    "elevationExpirationDate": null,
    "policyLevel": {
        "canUseEntireOrganization": true,
        "toEntireOrganization": false,
        "toComputerGroup": false,
        "selectedComputerGroup": {
            "computerGroupId": null,
            "name": null,
            "organizationId": null,
            "organizationName": null,
            "default": null,
            "osType": 0,
            "isGlobal": false
        },
        "toComputer": false
    },
    "adminNotes": {
        "ticket": "",
        "requestorEmail": "",
        "comments": ""
    },
    "applicationList": [],
    "systemAudits": [],
    "allowTMM": true,
    "fileExclusions": [],
    "hasOriginApprovalCenter": null,
    "responseSubject": null,
    "responseReason": null,
    "notifyOnResponse": false,
    "isExecutionRequest": true
}

 

ApprovalRequestPermitApplication

https://portalapi.INSTANCE.threatlocker.com/portalapi/ApprovalRequest/ApprovalRequestPermitApplication

  • Method: POST
  • Description: This API processes pending Application Control Approval Requests. The organizationIds list expects the organizationId of any parent organizations that are effectively "above" where the Approval Request originated from. The JSON value can be imported or copied from the endpoint listed above (ApprovalRequestGetPermitApplicationById) for processing. If the Approval Request you are processing is from a child organization, use the managedOrganizationId header and set it to the organization that contains the request, as described below.
  • Permission Requirements
    • Assign this permission:
      • Approve Escalation
    • OR If the Approval Request has a status of "Rejected, Approved, Self-Approved, or Added to Application", assign this permission:
      • Edit Actioned Requests
    • AND When using an existing custom application, assign this permission:
      • Approve for Update Existing
    • OR When using a new application, assign this permission:
      • Approve for New Install
    • AND Assign any one of the following permissions:
      • Approve for Entire Organization
      • Approve for Entire Organization (Hash Only)
      • Approve for Group
      • Approve for Group (Hash Only)
      • Approve for Single Computer
      • Approve for Single Computer (Application Only)
      • Approve for Single Computer (Hash Only)

       

Note: The examples below cover some common scenarios for permitting applications from a child organization, but are not all inclusive. For more detailed documentation, review the KB below:

ApprovalRequestPermitApplication

 

Optional header: managedOrganizationId Header

Expects: organizationId of the organization as <GUID> in format: "00000000-0000-0000-0000-000000000000"

Request body: Approve an Approval Request using an existing application, applying two custom rules, one by path and certificate, and the other by hash, and using an existing policy. Some fields have been replaced with template data, but these fields are expected to contain valid data.
{
    "adminNotes": {
        "comments": "<String>",
        "requestorEmail": "<String>",
        "ticket": "<String>"
    },
    "approvalRequest": {
        "approvalRequestId": "00000000-0000-0000-0000-000000000000",
        "json": "<String>",
        "requestorEmailAddress": "<String>"
    },
    "computerId": "00000000-0000-0000-0000-000000000000",
    "computerGroupId": "00000000-0000-0000-0000-000000000000",
    "fileDetails": {
        "fullPath": "<String>"
    },
    "matchingApplications": {
        "useExistingApplication": true,
        "existingApplication": {
            "applicationName": "<String>",
            "applicationId": "00000000-0000-0000-0000-000000000000",
            "organizationId": "00000000-0000-0000-0000-000000000000",
            "osType": <Integer>
        }
    },
    "organizationHasElevation": true,
    "organizationId": "00000000-0000-0000-0000-000000000000",
    "organizationIds": [
        "00000000-0000-0000-0000-000000000000"
    ],
    "osType": <Integer>,
    "policyConditions": {
        "useExistingPolicy": true,
        "manualOptions": [
            {
                "fullPath": "<String>",
                "cert": "<String>"
            },
            {
                "hash": "<String>"
            }
        ],
        "ruleId": 0
    },
    "policyLevel": {
       
    },
    "ringfenceActionId": 0
}
Request body: Approve an Approval Request using a matching application and create a new policy that affects the entire organization. Some fields have been replaced with template data, but these fields are expected to contain valid data.
{
    "adminNotes": {
        "comments": "<String>",
        "requestorEmail": "<String>",
        "ticket": "<String>"
    },
    "approvalRequest": {
        "approvalRequestId": "00000000-0000-0000-0000-000000000000",
        "json": "<String>",
        "requestorEmailAddress": "<String>"
    },
    "computerId": "00000000-0000-0000-0000-000000000000",
    "computerGroupId": "00000000-0000-0000-0000-000000000000",
    "fileDetails": {
        "fullPath": "<String>"
    },
    "matchingApplications": {
        "useMatchingApplication": true,
        "matchingApplication": {
            "applicationName": "<String>",
            "applicationId": "00000000-0000-0000-0000-000000000000",
            "organizationId": "00000000-0000-0000-0000-000000000000",
            "osType": <Integer>
        }
    },
    "organizationHasElevation": true,
    "organizationId": "00000000-0000-0000-0000-000000000000",
    "organizationIds": [
        "00000000-0000-0000-0000-000000000000"
    ],
    "osType": <Integer>,
    "policyConditions": {
        "useExistingPolicy": false,
        "manualOptions": [
           
        ],
        "ruleId": 0
    },
    "policyLevel": {
        "toEntireOrganization": true
    },
    "ringfenceActionId": 0
}
Request body: Approve an Approval Request, creating a new application with no application definitions, using Learning Mode for one hour, and creating a new policy for the computer from which the Approval Request was generated. Some fields have been replaced with template data, but these fields are expected to contain valid data.
{
    "adminNotes": {
        "comments": "<String>",
        "requestorEmail": "<String>",
        "ticket": "<String>"
    },
    "approvalRequest": {
        "approvalRequestId": "00000000-0000-0000-0000-000000000000",
        "json": "<String>"
    },
    "computerId": "00000000-0000-0000-0000-000000000000",
    "computerGroupId": "00000000-0000-0000-0000-000000000000",
    "fileDetails": {
        "fullPath": "<String>"
    },
    "matchingApplications": {
        "useNewApplication": true,
        "newApplicationName": "<String>"
    },
    "organizationHasElevation": true,
    "organizationId": "00000000-0000-0000-0000-000000000000",
    "organizationIds": [
        "00000000-0000-0000-0000-000000000000"
    ],
    "osType": <Integer>,
    "policyConditions": {
        "useExistingPolicy": false,
        "manualOptions": [
           
        ],
        "ruleId": 2
    },
    "policyLevel": {
        "toComputer": true
    },
    "ringfenceActionId": 0
}
Was this article helpful?