API reference: tenants (for hosting providers)

Give sites to tenants, let panel users see or manage a site, and set the tenant policy that bounds what tenants may change.

List who else may use a site

GET /api/sites/{name}/grants

Needs an Admin key.

Parameters

Name In Type Notes
name path string Required.

Replies

Status Meaning Body
200 OK list of UserSiteGrant

Reply fields

Field Type Description
userId string The panel user who has access. Always present.
siteName string The site the user has access to. Always present.
role SiteRole What the user may do with the site: look only, or also change its settings within the tenant policy. Always present. One of Viewer, Manager.

Let a panel user see or manage a site

PUT /api/sites/{name}/grants

Needs an Admin key.

role Viewer may only look; Manager may also change the site's settings within the tenant policy.

Parameters

Name In Type Notes
name path string Required.

Request body: GrantRequest

Field Type Description
userId string The panel user who has access. Required.
role SiteRole What the user may do with the site: look only, or also change its settings within the tenant policy. Required. One of Viewer, Manager.

Replies

Status Meaning Body
204 No Content none
400 Bad Request ApiError
404 Not Found none

Take away a panel user's access to a site

DELETE /api/sites/{name}/grants/{userId}

Needs an Admin key.

Parameters

Name In Type Notes
name path string Required.
userId path string Required.

Replies

Status Meaning Body
204 No Content none
404 Not Found none

Give a site to a tenant

PUT /api/sites/{name}/owner

Needs an Admin key.

Sets which tenant owns the site, so that tenant's Tenant keys and panel users can see and manage it.

Parameters

Name In Type Notes
name path string Required.

Request body: AssignOwnerRequest

Field Type Description
tenantId string The tenant that should own the site. Null or empty removes the site's owner. Optional.

Replies

Status Meaning Body
204 No Content none
404 Not Found none

Get the tenant policy

GET /api/tenant-policy

Needs an Admin key.

What every tenant may change on its own sites, unless overridden for that tenant.

Replies

Status Meaning Body
200 OK TenantSelfServicePolicy

Reply fields

Field Type Description
allowedModes list of EngineMode The WAF modes a tenant may switch its sites to. A tenant asking for a mode not listed is refused. Always present.
defaultMode EngineMode The mode a new tenant site starts in. Default: On (blocking). Always present. One of Off, DetectionOnly, On.
allowParanoiaEdit boolean Whether tenants may change the paranoia level of their sites. If false, only the host can. Default: true. Always present.
paranoiaMin integer Lowest paranoia level a tenant may choose, from 1 to 4. Default: 1. Always present.
paranoiaMax integer Highest paranoia level a tenant may choose, from 1 to 4 and not below the lowest. Default: 2. Always present.
allowThresholdEdit boolean Whether tenants may change the blocking sensitivity (the anomaly threshold) of their sites. If false, only the host can. Default: true. Always present.
thresholdMin integer Lowest blocking threshold a tenant may set, at least 1. A lower value blocks sooner. Default: 3. Always present.
thresholdMax integer Highest blocking threshold a tenant may set, not below the lowest. A higher value blocks later. Default: 7. Always present.
exclusionPolicy TenantExclusionPolicy Whether tenants may add rule exclusions (to stop a rule blocking legitimate traffic) themselves, must ask the host, or may not at all. Default: SelfApply. Always present. One of SelfApply, RequestApproval, Disabled.
maxTenantExclusions integer Most rule exclusions a tenant may have on one site when exclusions are self-applied. Default: 25. Always present.
allowTenantScan boolean Whether tenants may start a malware scan of their own sites. Default: true. Always present.
tenantScanMinIntervalMinutes integer Least time, in minutes, between two scans of the same site; a scan started sooner is refused. 0 means no wait. Default: 360 (6 hours). Always present.
maxScanFileSizeBytes integer Largest file, in bytes, that a tenant's scan will check; bigger files are skipped. Default: 33554432 (32 MiB). Always present.
quarantineAction TenantQuarantineAction What a tenant may do with a file that a scan quarantined. Default: RequestApproval. Always present. One of RequestApproval, ViewOnly, RestoreDelete.
allowCmsProtection boolean Whether tenants may choose a CMS protection profile for their sites and change their login protection and rate-limit settings. Default: true. Always present.
rateLimitEventsFloor integer Lowest requests-per-minute value a tenant may set for a CMS protection rate limit, so a tenant cannot lock out its own visitors. Default: 1. Always present.
allowRuntimeEdit boolean Whether tenants may say which runtime their site uses (PHP, .NET, classic ASP or static), which decides the file types uploads may carry. Default: true. Always present.
allowManagedCert boolean Whether tenants may turn on a PortWall-managed HTTPS certificate for their own sites that are not run through a hosting panel. Default: false. Always present.
maxManagedCerts integer Most managed certificates one tenant may have. 0 means no limit. Default: 0. Always present.

Change the tenant policy

PUT /api/tenant-policy

Needs an Admin key.

Request body: TenantSelfServicePolicy

Field Type Description
allowedModes list of EngineMode The WAF modes a tenant may switch its sites to. A tenant asking for a mode not listed is refused. Required.
defaultMode EngineMode The mode a new tenant site starts in. Default: On (blocking). Required. One of Off, DetectionOnly, On.
allowParanoiaEdit boolean Whether tenants may change the paranoia level of their sites. If false, only the host can. Default: true.
paranoiaMin integer Lowest paranoia level a tenant may choose, from 1 to 4. Default: 1.
paranoiaMax integer Highest paranoia level a tenant may choose, from 1 to 4 and not below the lowest. Default: 2.
allowThresholdEdit boolean Whether tenants may change the blocking sensitivity (the anomaly threshold) of their sites. If false, only the host can. Default: true.
thresholdMin integer Lowest blocking threshold a tenant may set, at least 1. A lower value blocks sooner. Default: 3.
thresholdMax integer Highest blocking threshold a tenant may set, not below the lowest. A higher value blocks later. Default: 7.
exclusionPolicy TenantExclusionPolicy Whether tenants may add rule exclusions (to stop a rule blocking legitimate traffic) themselves, must ask the host, or may not at all. Default: SelfApply. Required. One of SelfApply, RequestApproval, Disabled.
maxTenantExclusions integer Most rule exclusions a tenant may have on one site when exclusions are self-applied. Default: 25.
allowTenantScan boolean Whether tenants may start a malware scan of their own sites. Default: true.
tenantScanMinIntervalMinutes integer Least time, in minutes, between two scans of the same site; a scan started sooner is refused. 0 means no wait. Default: 360 (6 hours).
maxScanFileSizeBytes integer Largest file, in bytes, that a tenant's scan will check; bigger files are skipped. Default: 33554432 (32 MiB).
quarantineAction TenantQuarantineAction What a tenant may do with a file that a scan quarantined. Default: RequestApproval. Required. One of RequestApproval, ViewOnly, RestoreDelete.
allowCmsProtection boolean Whether tenants may choose a CMS protection profile for their sites and change their login protection and rate-limit settings. Default: true.
rateLimitEventsFloor integer Lowest requests-per-minute value a tenant may set for a CMS protection rate limit, so a tenant cannot lock out its own visitors. Default: 1.
allowRuntimeEdit boolean Whether tenants may say which runtime their site uses (PHP, .NET, classic ASP or static), which decides the file types uploads may carry. Default: true.
allowManagedCert boolean Whether tenants may turn on a PortWall-managed HTTPS certificate for their own sites that are not run through a hosting panel. Default: false.
maxManagedCerts integer Most managed certificates one tenant may have. 0 means no limit. Default: 0.

Replies

Status Meaning Body
200 OK TenantSelfServicePolicy
400 Bad Request ApiError

Reply fields

Field Type Description
allowedModes list of EngineMode The WAF modes a tenant may switch its sites to. A tenant asking for a mode not listed is refused. Always present.
defaultMode EngineMode The mode a new tenant site starts in. Default: On (blocking). Always present. One of Off, DetectionOnly, On.
allowParanoiaEdit boolean Whether tenants may change the paranoia level of their sites. If false, only the host can. Default: true. Always present.
paranoiaMin integer Lowest paranoia level a tenant may choose, from 1 to 4. Default: 1. Always present.
paranoiaMax integer Highest paranoia level a tenant may choose, from 1 to 4 and not below the lowest. Default: 2. Always present.
allowThresholdEdit boolean Whether tenants may change the blocking sensitivity (the anomaly threshold) of their sites. If false, only the host can. Default: true. Always present.
thresholdMin integer Lowest blocking threshold a tenant may set, at least 1. A lower value blocks sooner. Default: 3. Always present.
thresholdMax integer Highest blocking threshold a tenant may set, not below the lowest. A higher value blocks later. Default: 7. Always present.
exclusionPolicy TenantExclusionPolicy Whether tenants may add rule exclusions (to stop a rule blocking legitimate traffic) themselves, must ask the host, or may not at all. Default: SelfApply. Always present. One of SelfApply, RequestApproval, Disabled.
maxTenantExclusions integer Most rule exclusions a tenant may have on one site when exclusions are self-applied. Default: 25. Always present.
allowTenantScan boolean Whether tenants may start a malware scan of their own sites. Default: true. Always present.
tenantScanMinIntervalMinutes integer Least time, in minutes, between two scans of the same site; a scan started sooner is refused. 0 means no wait. Default: 360 (6 hours). Always present.
maxScanFileSizeBytes integer Largest file, in bytes, that a tenant's scan will check; bigger files are skipped. Default: 33554432 (32 MiB). Always present.
quarantineAction TenantQuarantineAction What a tenant may do with a file that a scan quarantined. Default: RequestApproval. Always present. One of RequestApproval, ViewOnly, RestoreDelete.
allowCmsProtection boolean Whether tenants may choose a CMS protection profile for their sites and change their login protection and rate-limit settings. Default: true. Always present.
rateLimitEventsFloor integer Lowest requests-per-minute value a tenant may set for a CMS protection rate limit, so a tenant cannot lock out its own visitors. Default: 1. Always present.
allowRuntimeEdit boolean Whether tenants may say which runtime their site uses (PHP, .NET, classic ASP or static), which decides the file types uploads may carry. Default: true. Always present.
allowManagedCert boolean Whether tenants may turn on a PortWall-managed HTTPS certificate for their own sites that are not run through a hosting panel. Default: false. Always present.
maxManagedCerts integer Most managed certificates one tenant may have. 0 means no limit. Default: 0. Always present.

List per-tenant policy overrides

GET /api/tenant-policy/overrides

Needs an Admin key.

Replies

Status Meaning Body
200 OK list of TenantPolicyOverride

Reply fields

Field Type Description
tenantId string The tenant this override is for. The tenant ID in the URL is used if the two differ. Always present.
allowedModes list of EngineMode The WAF modes this tenant may switch its sites to. Null follows the tenant policy; if set, it must list at least one mode.
defaultMode EngineMode The mode a new site of this tenant starts in. Null follows the tenant policy. One of Off, DetectionOnly, On.
allowParanoiaEdit boolean Whether this tenant may change the paranoia level of its sites. Null follows the tenant policy.
paranoiaMin integer Lowest paranoia level this tenant may choose, from 1 to 4. Null follows the tenant policy.
paranoiaMax integer Highest paranoia level this tenant may choose, from 1 to 4 and not below the lowest. Null follows the tenant policy.
allowThresholdEdit boolean Whether this tenant may change the blocking sensitivity of its sites. Null follows the tenant policy.
thresholdMin integer Lowest blocking threshold this tenant may set, at least 1. A lower value blocks sooner. Null follows the tenant policy.
thresholdMax integer Highest blocking threshold this tenant may set, not below the lowest. A higher value blocks later. Null follows the tenant policy.
exclusionPolicy TenantExclusionPolicy How this tenant may handle rule exclusions. Null follows the tenant policy. One of SelfApply, RequestApproval, Disabled.
maxTenantExclusions integer Most rule exclusions this tenant may have on one site. Null follows the tenant policy.
allowTenantScan boolean Whether this tenant may start a malware scan of its own sites. Null follows the tenant policy.
tenantScanMinIntervalMinutes integer Least time, in minutes, between two scans of the same site of this tenant. 0 means no wait. Null follows the tenant policy.
maxScanFileSizeBytes integer Largest file, in bytes, that this tenant's scans will check; bigger files are skipped. Null follows the tenant policy.
quarantineAction TenantQuarantineAction What this tenant may do with a quarantined file. Null follows the tenant policy. One of RequestApproval, ViewOnly, RestoreDelete.
allowCmsProtection boolean Whether this tenant may choose a CMS protection profile and change login protection and rate-limit settings. Null follows the tenant policy.
rateLimitEventsFloor integer Lowest requests-per-minute value this tenant may set for a CMS protection rate limit. Null follows the tenant policy.
allowRuntimeEdit boolean Whether this tenant may declare the runtime of its sites. Null follows the tenant policy.
allowManagedCert boolean Whether this tenant may turn on a PortWall-managed HTTPS certificate for its own sites. Null follows the tenant policy.
maxManagedCerts integer Most managed certificates this tenant may have. 0 means no limit. Null follows the tenant policy.

Get one tenant's policy override

GET /api/tenant-policy/overrides/{tenantId}

Needs an Admin key.

Parameters

Name In Type Notes
tenantId path string Required.

Replies

Status Meaning Body
200 OK TenantPolicyOverride
404 Not Found none

Reply fields

Field Type Description
tenantId string The tenant this override is for. The tenant ID in the URL is used if the two differ. Always present.
allowedModes list of EngineMode The WAF modes this tenant may switch its sites to. Null follows the tenant policy; if set, it must list at least one mode.
defaultMode EngineMode The mode a new site of this tenant starts in. Null follows the tenant policy. One of Off, DetectionOnly, On.
allowParanoiaEdit boolean Whether this tenant may change the paranoia level of its sites. Null follows the tenant policy.
paranoiaMin integer Lowest paranoia level this tenant may choose, from 1 to 4. Null follows the tenant policy.
paranoiaMax integer Highest paranoia level this tenant may choose, from 1 to 4 and not below the lowest. Null follows the tenant policy.
allowThresholdEdit boolean Whether this tenant may change the blocking sensitivity of its sites. Null follows the tenant policy.
thresholdMin integer Lowest blocking threshold this tenant may set, at least 1. A lower value blocks sooner. Null follows the tenant policy.
thresholdMax integer Highest blocking threshold this tenant may set, not below the lowest. A higher value blocks later. Null follows the tenant policy.
exclusionPolicy TenantExclusionPolicy How this tenant may handle rule exclusions. Null follows the tenant policy. One of SelfApply, RequestApproval, Disabled.
maxTenantExclusions integer Most rule exclusions this tenant may have on one site. Null follows the tenant policy.
allowTenantScan boolean Whether this tenant may start a malware scan of its own sites. Null follows the tenant policy.
tenantScanMinIntervalMinutes integer Least time, in minutes, between two scans of the same site of this tenant. 0 means no wait. Null follows the tenant policy.
maxScanFileSizeBytes integer Largest file, in bytes, that this tenant's scans will check; bigger files are skipped. Null follows the tenant policy.
quarantineAction TenantQuarantineAction What this tenant may do with a quarantined file. Null follows the tenant policy. One of RequestApproval, ViewOnly, RestoreDelete.
allowCmsProtection boolean Whether this tenant may choose a CMS protection profile and change login protection and rate-limit settings. Null follows the tenant policy.
rateLimitEventsFloor integer Lowest requests-per-minute value this tenant may set for a CMS protection rate limit. Null follows the tenant policy.
allowRuntimeEdit boolean Whether this tenant may declare the runtime of its sites. Null follows the tenant policy.
allowManagedCert boolean Whether this tenant may turn on a PortWall-managed HTTPS certificate for its own sites. Null follows the tenant policy.
maxManagedCerts integer Most managed certificates this tenant may have. 0 means no limit. Null follows the tenant policy.

Set one tenant's policy override

PUT /api/tenant-policy/overrides/{tenantId}

Needs an Admin key.

Parameters

Name In Type Notes
tenantId path string Required.

Request body: TenantPolicyOverride

Field Type Description
tenantId string The tenant this override is for. The tenant ID in the URL is used if the two differ. Required.
allowedModes list of EngineMode The WAF modes this tenant may switch its sites to. Null follows the tenant policy; if set, it must list at least one mode. Optional.
defaultMode EngineMode The mode a new site of this tenant starts in. Null follows the tenant policy. Optional. One of Off, DetectionOnly, On.
allowParanoiaEdit boolean Whether this tenant may change the paranoia level of its sites. Null follows the tenant policy. Optional.
paranoiaMin integer Lowest paranoia level this tenant may choose, from 1 to 4. Null follows the tenant policy. Optional.
paranoiaMax integer Highest paranoia level this tenant may choose, from 1 to 4 and not below the lowest. Null follows the tenant policy. Optional.
allowThresholdEdit boolean Whether this tenant may change the blocking sensitivity of its sites. Null follows the tenant policy. Optional.
thresholdMin integer Lowest blocking threshold this tenant may set, at least 1. A lower value blocks sooner. Null follows the tenant policy. Optional.
thresholdMax integer Highest blocking threshold this tenant may set, not below the lowest. A higher value blocks later. Null follows the tenant policy. Optional.
exclusionPolicy TenantExclusionPolicy How this tenant may handle rule exclusions. Null follows the tenant policy. Optional. One of SelfApply, RequestApproval, Disabled.
maxTenantExclusions integer Most rule exclusions this tenant may have on one site. Null follows the tenant policy. Optional.
allowTenantScan boolean Whether this tenant may start a malware scan of its own sites. Null follows the tenant policy. Optional.
tenantScanMinIntervalMinutes integer Least time, in minutes, between two scans of the same site of this tenant. 0 means no wait. Null follows the tenant policy. Optional.
maxScanFileSizeBytes integer Largest file, in bytes, that this tenant's scans will check; bigger files are skipped. Null follows the tenant policy. Optional.
quarantineAction TenantQuarantineAction What this tenant may do with a quarantined file. Null follows the tenant policy. Optional. One of RequestApproval, ViewOnly, RestoreDelete.
allowCmsProtection boolean Whether this tenant may choose a CMS protection profile and change login protection and rate-limit settings. Null follows the tenant policy. Optional.
rateLimitEventsFloor integer Lowest requests-per-minute value this tenant may set for a CMS protection rate limit. Null follows the tenant policy. Optional.
allowRuntimeEdit boolean Whether this tenant may declare the runtime of its sites. Null follows the tenant policy. Optional.
allowManagedCert boolean Whether this tenant may turn on a PortWall-managed HTTPS certificate for its own sites. Null follows the tenant policy. Optional.
maxManagedCerts integer Most managed certificates this tenant may have. 0 means no limit. Null follows the tenant policy. Optional.

Replies

Status Meaning Body
200 OK TenantPolicyOverride
400 Bad Request ApiError

Reply fields

Field Type Description
tenantId string The tenant this override is for. The tenant ID in the URL is used if the two differ. Always present.
allowedModes list of EngineMode The WAF modes this tenant may switch its sites to. Null follows the tenant policy; if set, it must list at least one mode.
defaultMode EngineMode The mode a new site of this tenant starts in. Null follows the tenant policy. One of Off, DetectionOnly, On.
allowParanoiaEdit boolean Whether this tenant may change the paranoia level of its sites. Null follows the tenant policy.
paranoiaMin integer Lowest paranoia level this tenant may choose, from 1 to 4. Null follows the tenant policy.
paranoiaMax integer Highest paranoia level this tenant may choose, from 1 to 4 and not below the lowest. Null follows the tenant policy.
allowThresholdEdit boolean Whether this tenant may change the blocking sensitivity of its sites. Null follows the tenant policy.
thresholdMin integer Lowest blocking threshold this tenant may set, at least 1. A lower value blocks sooner. Null follows the tenant policy.
thresholdMax integer Highest blocking threshold this tenant may set, not below the lowest. A higher value blocks later. Null follows the tenant policy.
exclusionPolicy TenantExclusionPolicy How this tenant may handle rule exclusions. Null follows the tenant policy. One of SelfApply, RequestApproval, Disabled.
maxTenantExclusions integer Most rule exclusions this tenant may have on one site. Null follows the tenant policy.
allowTenantScan boolean Whether this tenant may start a malware scan of its own sites. Null follows the tenant policy.
tenantScanMinIntervalMinutes integer Least time, in minutes, between two scans of the same site of this tenant. 0 means no wait. Null follows the tenant policy.
maxScanFileSizeBytes integer Largest file, in bytes, that this tenant's scans will check; bigger files are skipped. Null follows the tenant policy.
quarantineAction TenantQuarantineAction What this tenant may do with a quarantined file. Null follows the tenant policy. One of RequestApproval, ViewOnly, RestoreDelete.
allowCmsProtection boolean Whether this tenant may choose a CMS protection profile and change login protection and rate-limit settings. Null follows the tenant policy.
rateLimitEventsFloor integer Lowest requests-per-minute value this tenant may set for a CMS protection rate limit. Null follows the tenant policy.
allowRuntimeEdit boolean Whether this tenant may declare the runtime of its sites. Null follows the tenant policy.
allowManagedCert boolean Whether this tenant may turn on a PortWall-managed HTTPS certificate for its own sites. Null follows the tenant policy.
maxManagedCerts integer Most managed certificates this tenant may have. 0 means no limit. Null follows the tenant policy.

Remove one tenant's policy override

DELETE /api/tenant-policy/overrides/{tenantId}

Needs an Admin key.

The tenant falls back to the tenant policy.

Parameters

Name In Type Notes
tenantId path string Required.

Replies

Status Meaning Body
204 No Content none
404 Not Found none
Updated 2026-10-27Something unclear or missing? Tell us.