Wait for a change to be in force
GET /api/config-apply/status
Needs a Viewer or Admin key.
Many changes are saved at once and applied in the background; their reply carries applySeq. The change is in force when completed here reaches that number. outcome is applied, deferred (saved, taken up as soon as it can be) or failed, with message saying why.
Replies
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | ConfigApplyStatus |
Reply fields
| Field | Type | Description |
|---|---|---|
state |
string | applying while changes are still being applied, idle when nothing is waiting. Always present. |
requested |
integer | A counter of the changes asked for since PortWall started. A save returns the number its change was given (applySeq). Always present. |
completed |
integer | A counter of the changes applied so far. A change is in force once this reaches the applySeq its save returned. Always present. |
outcome |
string | How the latest apply ended: applied, deferred (saved, and taken up as soon as it can be), failed (see message), or none before the first apply. Always present. |
message |
string | Why the latest apply was deferred or failed. Null when it was applied or nothing has been applied yet. |
completedAt |
date-time | When the latest apply finished. Null until the first apply after PortWall started. |
reason |
string | A short label for the change that was last asked for, such as the site it was for. Null before the first change. |
Check the licence
GET /api/license
Needs a Viewer or Admin key.
state is Licensed, Grace or Unlicensed. While Unlicensed, enforcementActive is false: attacks are still detected and recorded, but nothing is blocked until the licence is renewed.
Replies
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | LicenseView |
Reply fields
| Field | Type | Description |
|---|---|---|
licenseKeyMasked |
string | The licence key with all but its last characters hidden, so you can tell which key is in use. Empty when there is none. Always present. |
licenseKeyPresent |
boolean | True when a licence key is set. Always present. |
licenseKeyFromConsole |
boolean | True when the key in use was entered in the console or through this API; false when it comes from the server's configuration file. Always present. |
enabled |
boolean | False only when licensing is not turned on for this installation; then state is Licensed and the other fields are absent. Always present. |
state |
string | Licensed (everything active), Grace (the licence could not be confirmed recently; protection stays fully on for at most 72 hours) or Unlicensed (blocking is switched off). Always present. |
reason |
string | Why the licence is in this state, in words. Always present. |
installId |
string | This installation's ID. Quote it when you write to PortWall about a licence. Always present. |
enforcementActive |
boolean | Whether PortWall is blocking attacks. False when Unlicensed: attacks are still detected and recorded, but not blocked. Always present. |
scanningActive |
boolean | Whether uploaded-file scanning is allowed by the licence. Always present. |
tier |
string | The name of your edition, for example Windows Premium or Appliance Enterprise. Always present. |
premium |
boolean | True when your edition is Premium or higher. Always present. |
enterprise |
boolean | True when your edition is Enterprise, which adds API protection. Always present. |
herdImmunityActive |
boolean | True when this server receives protection from attacker data shared by other PortWall servers (herd immunity). Needs Premium or higher. Always present. |
herdImmunityContributing |
boolean | True when this server shares its attack data with other PortWall servers. A Standard server contributes without receiving. Always present. |
smartTuningActive |
boolean | True when the Smart Tuning Advisor, which suggests rule exclusions, is available. Always present. |
premiumThreatIntelActive |
boolean | True when Premium Threat Intelligence is available. Always present. |
managedCertRenewalActive |
boolean | True when PortWall may renew its managed TLS certificates. Always present. |
blockStatePreserved |
boolean | Always true: current blocks and your settings are kept when a licence lapses, and work again once it is renewed. Always present. |
Enter or replace the licence key
POST /api/license/key
Needs an Admin key.
Saves the key and asks for a licence check at once, so the new state shows within moments on GET /api/license.
Request body: SetLicenseKeyRequest
| Field | Type | Description |
|---|---|---|
licenseKey |
string | The licence key, as shown in the customer portal. Required; at most 200 characters. Optional. |
Replies
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | SetLicenseKeyResult |
| 400 | Bad Request | ApiError |
Reply fields
| Field | Type | Description |
|---|---|---|
saved |
boolean | True when the key was saved. Always present. |
licenseKeyMasked |
string | The saved key with all but its last characters hidden. Always present. |
activating |
boolean | True when a licence check was asked for at once, so the new state shows within moments on GET /api/license. False when the key was saved but the check waits for the next scheduled one. Always present. |
Check that protection is working
GET /api/protection-status
Needs a Viewer or Admin key.
The same checks as the Overview's Protection status cards. allHealthy is true when every protection that is turned on is enforcing; problems lists those that are on but not working, each with fix.
Replies
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | ProtectionStatusView |
Reply fields
| Field | Type | Description |
|---|---|---|
available |
boolean | False only for a short time after PortWall starts, before the first check has finished; the other fields are then empty. Always present. |
generatedAt |
date-time | When these checks were made. Null while available is false. |
summary |
string | One line saying how protection is doing, for example how many protections are on and enforcing. Always present. |
criticalCount |
integer | How many protections are turned on but not enforcing anything. Always present. |
warningCount |
integer | How many protections are enforcing but degraded. Always present. |
problemCount |
integer | criticalCount plus warningCount: the number of protections that need attention. Always present. |
allHealthy |
boolean | True when problemCount is 0. Protections that are deliberately off do not count as problems. False while available is false. Always present. |
features |
list of ProtectionFeatureView |
Every protection and its state. Always present. |
problems |
list of ProtectionFeatureView |
Only the protections that need attention, most serious first. Each has a fix. Always present. |
Check that the API is answering
GET /health
No key needed.
Answers ok while the management service is running. It says nothing about protection: use /api/protection-status for that.
Replies
| Status | Meaning | Body |
|---|---|---|
| 200 | OK | HealthView |
Reply fields
| Field | Type | Description |
|---|---|---|
status |
string | Always ok while the management service is running. Always present. |