- Property Manager name: Site Failover
- Behavior version: The v2025-10-16rule format supports thefailActionbehavior v1.7.
- Rule format status: GA, stable
- Access: Read/Write
- Allowed in includes: Yes
Specifies how to respond when the origin is not available: by serving stale content, by serving an error page, or by redirecting.  To apply this behavior, you should match on an originTimeout or matchResponseCode.
| Option | Type | Description | Requires | |
|---|---|---|---|---|
| enabled | boolean | When enabled in case of a failure to contact the origin, the current behavior applies. | {"displayType":"boolean","tag":"input","type":"checkbox"} | |
| actionType | enum | Specifies the basic action to take when there is a failure to contact the origin. | {"displayType":"enum","options":["SERVE_STALE","REDIRECT","RECREATED_CO","RECREATED_CEX","RECREATED_NS","DYNAMIC"],"tag":"select"}{"if":{"attribute":"enabled","op":"eq","value":true}} | |
| SERVE_STALE | Serves content that is already in the cache. | |||
| REDIRECT | Specifies a redirect action. (Use with these options:  | |||
| RECREATED_CO | Serves alternate content from your network.  (Use with these options:  | |||
| RECREATED_CEX | Serves alternate content from an external network.  (Use with these options:  | |||
| RECREATED_NS | Serves NetStorage content. (Use with these options:  | |||
| DYNAMIC | Allows you to serve dynamic SaaS content if SaaS acceleration is available on your contract.  (Use with these options:  | |||
| saasType | enum | Identifies the component of the request that identifies the SaaS dynamic fail action. | actionTypeisDYNAMIC | {"displayType":"enum","options":["HOSTNAME","PATH","QUERY_STRING","COOKIE"],"tag":"select"}{"if":{"attribute":"actionType","op":"eq","value":"DYNAMIC"}} | 
| Supported values: COOKIE HOSTNAME PATH QUERY_STRING | ||||
| saasCnameEnabled | boolean | Specifies whether to use a CNAME chain to determine the hostname for the SaaS dynamic failaction. | saasTypeisHOSTNAME | {"displayType":"boolean","tag":"input","type":"checkbox"}{"if":{"attribute":"saasType","op":"eq","value":"HOSTNAME"}} | 
| saasCnameLevel | number | Specifies the number of elements in the CNAME chain backwards from the edge hostname that determines the hostname for the SaaS dynamic failaction. | saasCnameEnabledistrue | {"displayType":"number","tag":"input","type":"number"}{"if":{"attribute":"saasCnameEnabled","op":"eq","value":true}} | 
| saasCookie | string (allows variables) | Specifies the name of the cookie that identifies this SaaS dynamic failaction. | saasTypeisCOOKIE | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"saasType","op":"eq","value":"COOKIE"}} | 
| saasQueryString | string (allows variables) | Specifies the name of the query parameter that identifies this SaaS dynamic failaction. | saasTypeisQUERY_STRING | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"saasType","op":"eq","value":"QUERY_STRING"}} | 
| saasRegex | string | Specifies the substitution pattern (a Perl-compatible regular expression) that defines the SaaS dynamic failaction. | actionTypeisDYNAMIC | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"actionType","op":"eq","value":"DYNAMIC"}} | 
| saasReplace | string (allows variables) | Specifies the replacement pattern that defines the SaaS dynamic failaction. | actionTypeisDYNAMIC | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"actionType","op":"eq","value":"DYNAMIC"}} | 
| saasSuffix | string (allows variables) | Specifies the static portion of the SaaS dynamic failaction. | actionTypeisDYNAMIC | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"actionType","op":"eq","value":"DYNAMIC"}} | 
| dynamicMethod | enum | Specifies the redirect method. | actionTypeisDYNAMIC | {"displayType":"enum","options":["SERVE_301","SERVE_302","SERVE_ALTERNATE"],"tag":"select"}{"if":{"attribute":"actionType","op":"eq","value":"DYNAMIC"}} | 
| SERVE_301 | A 301 redirect response. | |||
| SERVE_302 | A 302 redirect response. | |||
| SERVE_ALTERNATE | Serve an alternate response. | |||
| dynamicCustomPath | boolean | Allows you to modify the original requested path. | actionTypeisDYNAMIC | {"displayType":"boolean","tag":"input","type":"checkbox"}{"if":{"attribute":"actionType","op":"eq","value":"DYNAMIC"}} | 
| dynamicPath | string (allows variables) | Specifies the new path. | dynamicCustomPathistrue | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"dynamicCustomPath","op":"eq","value":true}} | 
| redirectHostnameType | enum | Whether to preserve or customize the hostname. | actionTypeisREDIRECT | {"displayType":"enum","options":["ORIGINAL","ALTERNATE"],"tag":"select"}{"if":{"attribute":"actionType","op":"eq","value":"REDIRECT"}} | 
| ORIGINAL | Preserve the original hostname in the redirect. | |||
| ALTERNATE | Specify a  | |||
| redirectHostname | string (allows variables) | When the  | redirectHostnameTypeisALTERNATE | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"redirectHostnameType","op":"eq","value":"ALTERNATE"}} | 
| redirectCustomPath | boolean | Uses the  | actionTypeisREDIRECT | {"displayType":"boolean","tag":"input","type":"checkbox"}{"if":{"attribute":"actionType","op":"eq","value":"REDIRECT"}} | 
| redirectPath | string (allows variables) | Specifies a new path. | redirectCustomPathistrue | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"redirectCustomPath","op":"eq","value":true}} | 
| redirectMethod | enum | Specifies the HTTP response code. | actionTypeisREDIRECT | {"displayType":"enum","options":["302","301"],"tag":"select"}{"if":{"attribute":"actionType","op":"eq","value":"REDIRECT"}} | 
| Supported values: 301 302 | ||||
| contentHostname | string (allows variables) | Specifies the static hostname for the alternate redirect. | actionTypeisRECREATED_CO | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"actionType","op":"eq","value":"RECREATED_CO"}} | 
| contentCustomPath | boolean | Specifies a custom redirect path. | actionTypeisRECREATED_CO | {"displayType":"boolean","tag":"input","type":"checkbox"}{"if":{"attribute":"actionType","op":"eq","value":"RECREATED_CO"}} | 
| contentPath | string (allows variables) | Specifies a custom redirect path. | contentCustomPathistrue | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"contentCustomPath","op":"eq","value":true}} | 
| netStorageHostname | object | When the  | actionTypeisRECREATED_NS | {"displayType":"object","tag":"input","todo":true}{"if":{"attribute":"actionType","op":"eq","value":"RECREATED_NS"}} | 
| netStorageHostname.cpCode | integer | Identifies a CP code assigned to this storage group. | ||
| netStorageHostname.downloadDomainName | string | Domain name from which content can be downloaded. | ||
| netStorageHostname.g2oToken | string | Signature Header Authentication key. | ||
| netStorageHostname.id | integer | Unique identifier for the storage group. | ||
| netStorageHostname.name | string | Name of the storage group. | ||
| netStoragePath | string (allows variables) | When the  | actionTypeisRECREATED_NS | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"actionType","op":"eq","value":"RECREATED_NS"}} | 
| cexHostname | string (allows variables) | Specifies a hostname. | actionTypeisRECREATED_CEX | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"actionType","op":"eq","value":"RECREATED_CEX"}} | 
| cexCustomPath | boolean | Specifies a custom path. | actionTypeisRECREATED_CEX | {"displayType":"boolean","tag":"input","type":"checkbox"}{"if":{"attribute":"actionType","op":"eq","value":"RECREATED_CEX"}} | 
| cexPath | string (allows variables) | Specifies a custom path. | cexCustomPathistrue | {"displayType":"string","tag":"input","type":"text"}{"if":{"attribute":"cexCustomPath","op":"eq","value":true}} | 
| cpCode | object | Specifies a CP code for which to log errors for the NetStorage location. You only need to provide the initial  | actionTypeisRECREATED_NS | {"displayType":"object","tag":"input","todo":true}{"if":{"attribute":"actionType","op":"eq","value":"RECREATED_NS"}} | 
| cpCode.cpCodeLimits | array | Read-only. Describes the current usage limit for the CP code. | ||
| cpCode.createdDate | integer | Read-only. UNIX epoch timestamp reflecting when the CP code was originally created. | ||
| cpCode.description | string | Read-only. Additional description for the CP code. | ||
| cpCode.id | integer | Unique identifier for each CP code. Initially, you get this value when creating a new CP code in PAPI. You can also assign a  | ||
| cpCode.name | string | Read-only. The name of the CP code you specify as the  | ||
| cpCode.products | array | Read-only. The set of products the CP code is assigned to. This reflects  | ||
| statusCode | enum | Assigns a new HTTP status code to the failure response. | actionTypeisRECREATED_NS | {"displayType":"enum","options":["200","404","500","100","101","102","103","122","201","202","203","204","205","206","207","226","400","401","402","403","405","406","407","408","409","410","411","412","413","414","415","416","417","422","423","424","425","426","428","429","431","444","449","450","499","501","502","503","504","505","506","507","509","510","511","598","599"],"tag":"select"}{"if":{"attribute":"actionType","op":"eq","value":"RECREATED_NS"}} | 
| Supported values: 100 101 102 103 122 200 201 202 203 204 205 206 207 226 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 422 423 424 425 426 428 429 431 444 449 450 499 500 501 502 503 504 505 506 507 509 510 511 598 599 | ||||
| preserveQueryString | boolean | When using either  | contentCustomPathistrueOR cexCustomPathistrueOR redirectCustomPathistrueOR dynamicCustomPathistrue | {"displayType":"boolean","tag":"input","type":"checkbox"}{"if":{"op":"or","params":[{"attribute":"contentCustomPath","op":"eq","value":true},{"attribute":"cexCustomPath","op":"eq","value":true},{"attribute":"redirectCustomPath","op":"eq","value":true},{"attribute":"dynamicCustomPath","op":"eq","value":true}]}} | 
| modifyProtocol | boolean | Modifies the redirect's protocol using the value of the  | actionTypeisREDIRECTOR dynamicMethodis either:SERVE_301,SERVE_302 | {"displayType":"boolean","tag":"input","type":"checkbox"}{"if":{"op":"or","params":[{"attribute":"actionType","op":"eq","value":"REDIRECT"},{"attribute":"dynamicMethod","op":"in","value":["SERVE_301","SERVE_302"]}]}} | 
| protocol | enum | When the  | modifyProtocolistrue | {"displayType":"enum","options":["HTTP","HTTPS"],"tag":"select"}{"if":{"attribute":"modifyProtocol","op":"eq","value":true}} | 
| Supported values: HTTP HTTPS | 
