---
schema_version: "1"
id: 33e0c05b067aca44be8078aabed4c230e14c08735d58959b4a7856aa76bebfdd
title: CDN Zones
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/commerce-cloud/commerce-api/references/generated-api-specs/zones.md
canonical_url: https://developer.salesforce.com/docs/commerce/commerce-api/references/zones
source_site: developer.salesforce.com
content_type: documentation
content_hash: a02bfeb434c6a2ba4a2252323cb1862019ee526e17c67961c3439a1b0b7e8769
products:
  - B2C Commerce API
  - Salesforce APIs
---
CDN Zones

# CDN Zones

[Download API specification](https://developer.salesforce.com/static/commercecloud/commerce-api/zones/zones-oas-v1-public.yaml)

## API Overview

The Content Delivery Network (CDN) API is for managing the embedded CDN (eCDN) that is included with Commerce Cloud and configured with Business Manager.

Use the API to:

*   Ensure that traffic doesn’t circumvent proxies layered in front of your eCDN.
*   Accelerate the delivery of resources to users with caching, compression, and prioritization.
*   Customize how users interact with resources and how requests are processed, including custom pages and routing rules.
*   Provide proactive and complete application protection against new and existing exploits from bad actors.

### Authentication & Authorization

For resource access, you must use a client ID and client secret from Account Manager to request an access token. The access token is used as a bearer token and added to the `Authorization` header of your API request.

The API client must also have at least one of the following OAuth scopes: `sfcc.cdn-zones` or `sfcc.cdn-zones.rw`.

For detailed setup instructions, see the [Authorization for Admin APIs](https://developer.salesforce.com/docs/commerce/commerce-api/guide/authorization-for-admin-apis.html) guide.

You must include the relevant scope(s) in the client ID used to generate the token. For details, see the [Authorization Scopes Catalog.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/auth-z-scope-catalog.html)

### Response Details

#### Timeouts

Admin API requests must respond within 60 seconds. If a response exceeds this threshold, an HTTP 504 status code is returned. For details, see [Timeouts and Limits.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/timeouts-limits.html)

#### Error Handling

Error responses follow the [RFC 7807](https://datatracker.ietf.org/doc/html/rfc7807) problem detail format. To trace errors, include a `correlation-id` header in your request — the response returns it as `x-correlation-id`. For details, see [HTTP Status Codes and Errors.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/error-response-codes.html)

### Use Cases

For detailed usage information, refer to the [CDN Zones Guides.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones.html)

**Version:** 1.3.0

## Servers

*   `https://{shortCode}.api.commercecloud.salesforce.com/cdn/zones/v1`
    *   `shortCode (default shortCode) An eight-character string assigned to a realm for routing purposes. See [Base URL and Request Formation.](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html)`

## Security

*   `AmOAuth2` (oauth2) AccountManager OAuth 2.0 bearer token Authentication.
    *   OAuth flow clientCredentials (tokenUrl: https://account.demandware.com/dwsso/oauth2/access\_token)
    *   Scope sfcc.cdn-zones: CDN API Scope READONLY
    *   Scope sfcc.cdn-zones.rw: CDN API Scope
    *   OAuth flow authorizationCode (authorizationUrl: https://account.demandware.com/dwsso/oauth2/authorize, tokenUrl: https://account.demandware.com/dwsso/oauth2/access\_token)
    *   Scope sfcc.cdn-zones: CDN API Scope READONLY
    *   Scope sfcc.cdn-zones.rw: CDN API Scope

## Operations

### POST Create a new storefront zone.

`POST /organizations/{organizationId}/storefront-zones`

Operation ID: `createStorefrontZone`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Create a new storefront zone for the organization. Use this endpoint to set up a new CDN zone with specific configurations for storefront applications.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `StorefrontZoneCreateRequest`.

_Example: StorefrontZoneCreateRequestBodyExample_

```
{
  "domainName": "cc-merchant.com"
}
```

#### Responses

*   **201** Successfully created new storefront zone.
    
    Media type: `application/json`. Schema: `StorefrontZoneCreateEnvelope`.
    
    _Example: StorefrontZoneCreateResponse_
    
    ```
    {
      "data": {
        "zoneId": "023e105f4ecef8ad9ca31a8372d0c353",
        "zoneName": "stg-zzzz-cc-merchant-com.cc-ecdn.net",
        "createdOn": "2022-01-01T05:20:00.12345Z",
        "status": "active"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: BadRequest_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/bad-request",
      "title": "Bad Request",
      "detail": "Request body contains 1 or more attributes that contains errors."
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: InternalServerError_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/internal-server",
      "title": "Internal Server Error",
      "detail": "An internal server error occured. Please contact support."
    }
    ```
    

### GET Return all the mTLS certificates for the account.

`GET /organizations/{organizationId}/mtls/code-upload-certificates`

Operation ID: `getCodeUploadCertificates`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve all mTLS certificates for the account. These certificates are used for secure code upload operations and client authentication.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully retrieved details of the mTLS certificates requested by the caller.
    
    Media type: `application/json`. Schema: `MtlsCertificatesResponseEnvelope`.
    
    _Example: MtlsCodeUploadGetCertificatesResponse_
    
    ```
    {
      "data": [
        {
          "mtlsCertificateId": "465a48f6-3d98-4c15-9312-211984ee8629",
          "expiresOn": "2022-01-12T04:15:57Z",
          "issuer": "DigiCert",
          "signature": "SHA256WithRSA",
          "uploadedOn": "2020-01-12T04:15:57Z",
          "ca": true,
          "serialNumber": "432217133297895665180570788458463042229861757760",
          "mtlsCertificateName": "mtls_cert_name",
          "mtlsAssociatedCodeUploadHostname": "mtls.cert.salesforce.com"
        },
        {
          "mtlsCertificateId": "465a48f6-3d98-4c15-9312-211984ee8630",
          "expiresOn": "2022-01-12T04:15:57Z",
          "issuer": "DigiCert",
          "signature": "SHA256WithRSA",
          "uploadedOn": "2020-01-12T04:15:57Z",
          "ca": true,
          "serialNumber": "432217133297895665180570788458463042229861757761",
          "mtlsCertificateName": "mtls_cert_name",
          "mtlsAssociatedCodeUploadHostname": "mtls.cert.salesforce.com"
        }
      ]
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Set up two-factor mTLS certificates for the account and associate the staging zone code upload hostname.

`POST /organizations/{organizationId}/mtls/code-upload-certificates`

Operation ID: `createCodeUploadCertificate`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Create a new mTLS certificate for code upload operations. This certificate enables secure client authentication for code deployment processes.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `MtlsCertificateRequest`.

_Example: MtlsCodeUploadPostCertificateRequestBodyExample_

```
{
  "name": "mtls_cert_name",
  "certificate": "-----BEGIN CERTIFICATE-----\nMIIDtTCCAp2gAwIBAgIJAMHAwfXZ5PWMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwODI0MTY0MzAxWhcNMTYxMTIyMTY0MzAxWjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmGdtcGbg/1\nCGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKnabIRuGvB\nKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpidtnKX/a+5\n0GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+pyFxIXjbEI\ndZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pEewooaeO2\nizNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABo4GnMIGkMB0GA1UdDgQWBBT/LbE4\n9rWf288N6sJA5BRb6FJIGDB1BgNVHSMEbjBsgBT/LbE49rWf288N6sJA5BRb6FJI\nGKFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV\nBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAMHAwfXZ5/PWMAwGA1UdEwQF\nMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHHFwl0tH0quUYZYO0dZYt4R7SJ0pCm2\n2satiyzHl4OnXcHDpekAo7/a09c6Lz6AU83cKy/+x3/djYHXWba7HpEu0dR3ugQP\nMlr4zrhd9xKZ0KZKiYmtJH+ak4OM4L3FbT0owUZPyjLSlhMtJVcoRp5CJsjAMBUG\nSvD8RX+T01wzox/Qb+lnnNnOlaWpqu8eoOenybxKp1a9ULzIVvN/LAcc+14vioFq\n2swRWtmocBAs8QR9n4uvbpiYvS8eYueDCWMM4fvFfBhaDZ3N9IbtySh3SpFdQDhw\nYbjM2rxXiyLGxB4Bol7QTv4zHif7Zt89FReT/NBy4rzaskDJY5L6xmY=\n-----END CERTIFICATE-----",
  "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmG\ndtcGbg/1CGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKn\nabIRuGvBKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpid\ntnKX/a+50GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+py\nFxIXjbEIdZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pE\newooaeO2izNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABAoIBACbhTYXBZYKmYPCb\nHBR1IBlCQA2nLGf0qRuJNJZg5iEzXows/6tc8YymZkQE7nolapWsQ+upk2y5Xdp/\naxiuprIs9JzkYK8Ox0r+dlwCG1kSW+UAbX0bQ/qUqlsTvU6muVuMP8vZYHxJ3wmb\n+ufRBKztPTQ/rYWaYQcgC0RWI20HTFBMxlTAyNxYNWzX7RKFkGVVyB9RsAtmcc8g\n+j4OdosbfNoJPS0HeIfNpAznDfHKdxDk2Yc1tV6RHBrC1ynyLE9+TaflIAdo2MVv\nKLMLq51GqYKtgJFIlBRPQqKoyXdz3fGvXrTkf/WY9QNq0J1Vk5ERePZ54mN8iZB7\n9lwy/AkCgYEA6FXzosxswaJ2wQLeoYc7ceaweX/SwTvxHgXzRyJIIT0eJWgx13Wo\n/WA3Iziimsjf6qE+SI/8laxPp2A86VMaIt3Z3mJN/CqSVGw8LK2AQst+OwdPyDMu\niacE8lj/IFGC8mwNUAb9CzGU3JpU4PxxGFjS/eMtGeRXCWkK4NE+G08CgYEA1Kp9\nN2JrVlqUz+gAX+LPmE9OEMAS9WQSQsfCHGogIFDGGcNf7+uwBM7GAaSJIP01zcoe\nVAgWdzXCv3FLhsaZoJ6RyLOLay5phbu1iaTr4UNYm5WtYTzMzqh8l1+MFFDl9xDB\nvULuCIIrglM5MeS/qnSg1uMoH2oVPj9TVst/ir8CgYEAxrI7Ws9Zc4Bt70N1As+U\nlySjaEVZCMkqvHJ6TCuVZFfQoE0r0whdLdRLU2PsLFP+q7qaeZQqgBaNSKeVcDYR\n9B+nY/jOmQoPewPVsp/vQTCnE/R81spu0mp0YI6cIheT1Z9zAy322svcc43JaWB7\nmEbeqyLOP4Z4qSOcmghZBSECgYACvR9Xs0DGn+wCsW4vze/2ei77MD4OQvepPIFX\ndFZtlBy5ADcgE9z0cuVB6CiL8DbdK5kwY9pGNr8HUCI03iHkW6Zs+0L0YmihfEVe\nPG19PSzK9CaDdhD9KFZSbLyVFmWfxOt50H7YRTTiPMgjyFpfi5j2q348yVT0tEQS\nfhRqaQKBgAcWPokmJ7EbYQGeMbS7HC8eWO/RyamlnSffdCdSc7ue3zdVJxpAkQ8W\nqu80pEIF6raIQfAf8MXiiZ7auFOSnHQTXUbhCpvDLKi0Mwq3G8Pl07l+2s6dQG6T\nlv6XTQaMyf6n1yjzL+fzDrH3qXMxHMO/b13EePXpDMpY7HQpoLDi\n-----END RSA PRIVATE KEY-----"
}
```

#### Responses

*   **201** Returns information about the uploaded mTLS certificate.
    
    Media type: `application/json`. Schema: `MtlsCertificateResponseEnvelope`.
    
    _Example: MtlsCodeUploadGetCertificateResponse_
    
    ```
    {
      "data": {
        "mtlsCertificateId": "465a48f6-3d98-4c15-9312-211984ee8629",
        "expiresOn": "2022-01-12T04:15:57Z",
        "issuer": "DigiCert",
        "signature": "SHA256WithRSA",
        "uploadedOn": "2020-01-12T04:15:57Z",
        "ca": true,
        "serialNumber": "432217133297895665180570788458463042229861757760",
        "mtlsCertificateName": "mtls_cert_name",
        "mtlsAssociatedCodeUploadHostname": "mtls.cert.salesforce.com"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Return the mTLS certificate for the given account's mTLS certificate ID.

`GET /organizations/{organizationId}/mtls/code-upload-certificates/{mtlsCertificateId}`

Operation ID: `getCodeUploadCertificate`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve a specific mTLS certificate by its ID. This endpoint provides detailed information about the certificate's configuration, status, and associated hostname.

#### Parameters

*   `mtlsCertificateId` (path, string, required) The unique identifier of an mTLS certificate.  
    Pattern: ^.\*$. Example: `465a48f6-3d98-4c15-9312-211984ee8629`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully retrieved mTLS certificate information from the mTLS certificate ID requested by the caller.
    
    Media type: `application/json`. Schema: `MtlsCertificateResponseEnvelope`.
    
    _Example MtlsCodeUploadGetCertificateResponse: same as POST /organizations/{organizationId}/mtls/code-upload-certificates 201 response._
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Remove an mTLS certificate and associated hostname.

`DELETE /organizations/{organizationId}/mtls/code-upload-certificates/{mtlsCertificateId}`

Operation ID: `deleteCodeUploadCertificate`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Permanently delete an mTLS certificate and its associated hostname from the account. This operation cannot be undone.

#### Parameters

*   `mtlsCertificateId` (path, string, required) The unique identifier of an mTLS certificate.  
    Pattern: ^.\*$. Example: `465a48f6-3d98-4c15-9312-211984ee8629`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **204** Successfully deleted the mTLS certificate from the account.
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    

### GET Get page shield notification webhooks.

`GET /organizations/{organizationId}/page-shield/notifications`

Operation ID: `getPageShieldNotification`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN PCI 4.0 Compliance Tools](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html).

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully retrieved notification webhooks.
    
    Media type: `application/json`. Schema: `PageShieldNotificationWebhookListEnvelope`.
    
    _Example: PageShieldNotificationWebhookListResponse_
    
    ```
    {
      "data": [
        {
          "id": "webhook_1234567890abcdef",
          "name": "Security Alert Webhook",
          "webhookUrl": "https://example.com/webhook/security",
          "type": "security_alert",
          "createdAt": "2023-01-01T00:00:00Z",
          "lastSuccess": "2023-01-01T12:00:00Z",
          "lastFailure": "2023-01-01T18:00:00Z",
          "enabled": true,
          "zones": [
            "zone_1234567890abcdef"
          ]
        }
      ]
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Setup page shield notification webhook.

`POST /organizations/{organizationId}/page-shield/notifications`

Operation ID: `postPageShieldNotification`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN PCI 4.0 Compliance Tools](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html).

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `PageShieldNotificationWebhookRequest`.

_Example: PageShieldNotificationWebhookRequest_

```
{
  "webhookUrl": "https://example.com/webhook/security",
  "name": "Security Alert Webhook",
  "secret": "webhook_secret_123",
  "enabled": true,
  "zones": [
    "zone_1234567890abcdef"
  ]
}
```

#### Responses

*   **200** Successfully added notification webhook.
    
    Media type: `application/json`. Schema: `PageShieldNotificationWebhookEnvelope`.
    
    _Example: PageShieldNotificationWebhookResponse_
    
    ```
    {
      "data": {
        "id": "webhook_1234567890abcdef",
        "name": "Security Alert Webhook",
        "webhookUrl": "https://example.com/webhook/security",
        "type": "security_alert",
        "createdAt": "2023-01-01T00:00:00Z",
        "lastSuccess": "2023-01-01T12:00:00Z",
        "lastFailure": "2023-01-01T18:00:00Z",
        "enabled": true,
        "zones": [
          "zone_1234567890abcdef"
        ]
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Delete page shield notification webhook.

`DELETE /organizations/{organizationId}/page-shield/notifications/{webhookId}`

Operation ID: `deletePageShieldNotification`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN PCI 4.0 Compliance Tools](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html).

#### Parameters

*   `webhookId` (path, string, required) The unique identifier of a webhook.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **204** Successfully deleted notification webhook.
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update page shield notification webhook.

`PATCH /organizations/{organizationId}/page-shield/notifications/{webhookId}`

Operation ID: `updatePageShieldNotification`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN PCI 4.0 Compliance Tools](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html).

#### Parameters

*   `webhookId` (path, string, required) The unique identifier of a webhook.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `PageShieldNotificationWebhookUpdateRequest`.

_Example: PageShieldNotificationWebhookUpdateRequest_

```
{
  "webhookId": "ffffe61cf25e4ec49c34b029ff3060f7",
  "enabled": true,
  "zones": [
    "zone_1234567890abcdef"
  ]
}
```

#### Responses

*   **200** Successfully updated notification webhook.
    
    Media type: `application/json`. Schema: `PageShieldNotificationWebhookEnvelope`.
    
    _Example PageShieldNotificationWebhookResponse: same as POST /organizations/{organizationId}/page-shield/notifications 200 response._
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET List webhooks.

`GET /organizations/{organizationId}/webhook`

Operation ID: `getWebhooks`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve all webhooks.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully retrieved webhooks.
    
    Media type: `application/json`. Schema: `WebhookListEnvelope`.
    
    _Example: WebhookListResponse_
    
    ```
    {
      "data": [
        {
          "id": "ffffe61cf25e4ec49c34b029ff3060f7",
          "name": "My Webhook",
          "url": "https://example.com/webhook",
          "type": "webhook",
          "createdAt": "2023-01-01T00:00:00Z",
          "lastSuccess": "2023-01-01T12:00:00Z",
          "lastFailure": "2023-01-01T18:00:00Z"
        }
      ]
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The requested resource was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Create webhook.

`POST /organizations/{organizationId}/webhook`

Operation ID: `createWebhook`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Create a new webhook.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `WebhookRequest`.

_Example: WebhookRequestBodyExample_

```
{
  "name": "My Webhook",
  "url": "https://example.com/webhook",
  "secret": "webhook_secret_123"
}
```

#### Responses

*   **201** Successfully created webhook.
    
    Media type: `application/json`. Schema: `WebhookEnvelope`.
    
    _Example: WebhookResponse_
    
    ```
    {
      "data": {
        "id": "ffffe61cf25e4ec49c34b029ff3060f7",
        "name": "My Webhook",
        "url": "https://example.com/webhook",
        "type": "webhook",
        "createdAt": "2023-01-01T00:00:00Z",
        "lastSuccess": "2023-01-01T12:00:00Z",
        "lastFailure": "2023-01-01T18:00:00Z"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Get webhook by ID.

`GET /organizations/{organizationId}/webhook/{webhookId}`

Operation ID: `getWebhook`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve a specific webhook.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `webhookId` (path, string, required) The unique identifier of a webhook.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.

#### Responses

*   **200** Successfully retrieved webhook.
    
    Media type: `application/json`. Schema: `WebhookEnvelope`.
    
    _Example WebhookResponse: same as POST /organizations/{organizationId}/webhook 201 response._
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The requested resource was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PUT Update webhook.

`PUT /organizations/{organizationId}/webhook/{webhookId}`

Operation ID: `updateWebhook`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Update an existing webhook.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `webhookId` (path, string, required) The unique identifier of a webhook.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.

#### Request body (required)

Media type: `application/json`. Schema: `WebhookRequest`.

_Example: WebhookRequestBodyExample_

```
{
  "name": "My Webhook",
  "url": "https://example.com/webhook",
  "secret": "webhook_secret_123"
}
```

#### Responses

*   **200** Successfully updated webhook.
    
    Media type: `application/json`. Schema: `WebhookEnvelope`.
    
    _Example WebhookResponse: same as POST /organizations/{organizationId}/webhook 201 response._
    
*   **201** Successfully created webhook.
    
    Media type: `application/json`. Schema: `WebhookEnvelope`.
    
    _Example WebhookResponse: same as POST /organizations/{organizationId}/webhook 201 response._
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The requested resource was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Delete webhook.

`DELETE /organizations/{organizationId}/webhook/{webhookId}`

Operation ID: `deleteWebhook`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Delete a webhook.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `webhookId` (path, string, required) The unique identifier of a webhook.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.

#### Responses

*   **204** Successfully deleted webhook.
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The requested resource was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET List page shield policies.

`GET /organizations/{organizationId}/zones/{zoneId}/page-shield/policies`

Operation ID: `getPageShieldPolicies`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN PCI 4.0 Compliance Tools](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** List current page shield policies.
    
    Media type: `application/json`. Schema: `PageShieldPoliciesListEnvelope`.
    
    _Example: PageShieldPoliciesGetResponse_
    
    ```
    {
      "data": [
        {
          "action": "log",
          "description": "example page shield policy 1",
          "enabled": true,
          "expression": "(http.request.full_uri contains \"/Checkout-Begin\" and http.host eq \"www.example.com\")",
          "value": "script-src salesforce.com *.salesforce.com https://www.example.com/on/demandware.static/Sites-RefArch-Site/-/en_US/v1738096133818/js/checkout.js 'unsafe-inline'",
          "id": "4805ab87bb867579757a4564ba46ebca"
        },
        {
          "action": "log",
          "description": "example page shield policy 2",
          "enabled": true,
          "expression": "ends_with(http.request.uri.path, \"/test1\")",
          "value": "script-src 'none'",
          "id": "7650c87c9c2846c296ea4564ba46ebca"
        }
      ]
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Create page shield policy.

`POST /organizations/{organizationId}/zones/{zoneId}/page-shield/policies`

Operation ID: `createPageShieldPolicy`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN PCI 4.0 Compliance Tools](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `PageShieldPolicyRequest`.

_Example: PageShieldPolicyRequestBodyExample_

```
{
  "action": "log",
  "description": "example page shield policy",
  "enabled": true,
  "expression": "ends_with(http.request.uri.path, \"/test1\")",
  "value": "script-src 'none'"
}
```

#### Responses

*   **200** Successfully created page shield policy.
    
    Media type: `application/json`. Schema: `PageShieldPoliciesEnvelope`.
    
    _Example: PageShieldPolicyGetResponse_
    
    ```
    {
      "data": {
        "action": "log",
        "description": "example page shield policy",
        "enabled": true,
        "expression": "ends_with(http.request.uri.path, \"/test1\")",
        "value": "script-src 'none'",
        "id": "7650c87c9c2846c296ea4564ba46ebca"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Get page shield policy by policy ID.

`GET /organizations/{organizationId}/zones/{zoneId}/page-shield/policies/{policyId}`

Operation ID: `getPageShieldPolicy`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN PCI 4.0 Compliance Tools](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html).

#### Parameters

*   `policyId` (path, string, required) The unique identifier of a Page Shield policy.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully retrieved the details of the page shield policy.
    
    Media type: `application/json`. Schema: `PageShieldPoliciesEnvelope`.
    
    _Example PageShieldPolicyGetResponse: same as POST /organizations/{organizationId}/zones/{zoneId}/page-shield/policies 200 response._
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PUT Update page shield policy by policy ID.

`PUT /organizations/{organizationId}/zones/{zoneId}/page-shield/policies/{policyId}`

Operation ID: `updatePageShieldPolicy`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN PCI 4.0 Compliance Tools](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html).

#### Parameters

*   `policyId` (path, string, required) The unique identifier of a Page Shield policy.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `PageShieldPolicyRequest`.

_Example: PageShieldPolicyPutRequestBodyExample_

```
{
  "action": "allow",
  "enabled": true
}
```

#### Responses

*   **200** Successfully updated the page shield policy.
    
    Media type: `application/json`. Schema: `PageShieldPoliciesEnvelope`.
    
    _Example: PageShieldPoliciesEnvelope_
    
    ```
    {
      "data": {
        "action": "allow",
        "description": "example page shield policy",
        "enabled": true,
        "expression": "ends_with(http.request.uri.path, \"/test1\")",
        "value": "script-src 'none'",
        "id": "7650c87c9c2846c296ea4564ba46ebca"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Delete page shield policy.

`DELETE /organizations/{organizationId}/zones/{zoneId}/page-shield/policies/{policyId}`

Operation ID: `deletePageShieldPolicy`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN PCI 4.0 Compliance Tools](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html).

#### Parameters

*   `policyId` (path, string, required) The unique identifier of a Page Shield policy.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **204** Successfully deleted the page shield policy.
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve a list of scripts detected by page shield for a specific zone.

`GET /organizations/{organizationId}/zones/{zoneId}/page-shield/scripts`

Operation ID: `getPageShieldScripts`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN PCI 4.0 Compliance Tools](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `direction` (query, string) The direction used to sort returned scripts.  
    Allowed values: `asc`, `desc`. Example: `asc`.
*   `excludeCdnCgi` (query, boolean) When true, excludes scripts existing in a /cdn-cgi path from the returned scripts. Default is true.  
    Example: `true`.
*   `excludeDuplicates` (query, boolean) When true, excludes duplicate scripts. Default is false.  
    Example: `false`.
*   `excludeUrls` (query, string) Excludes scripts with a URL that contains one of the URL-encoded URLs separated by commas.  
    Pattern: ^.\*$. Example: `https://example.com/script1.js,https://example.com/script2.js`.
*   `hosts` (query, string) Includes scripts that match one or more URL-encoded hostnames separated by commas. Wildcards are supported at the beginning and end of each hostname.  
    Pattern: ^.\*$. Example: `*.example.com,test.example.com`.
*   `orderBy` (query, string) The field used to sort returned scripts.  
    Allowed values: `first_seen_at`, `last_seen_at`. Example: `last_seen_at`.
*   `pageUrl` (query, string) Includes scripts that match one or more page URLs (separated by commas) where they were last detected. Wildcards are supported at the beginning and end of each page URL.  
    Pattern: ^.\*$. Example: `https://example.com/page1,https://example.com/page2`.
*   `prioritizeMalicious` (query, boolean) When true, lists malicious scripts first in the returned scripts.  
    Example: `true`.
*   `status` (query, string) Filters the returned scripts using a comma-separated list of script statuses. Accepted values are 'active', 'infrequent', and 'inactive'. Default is 'active'.  
    Pattern: ^.\*$. Example: `active,infrequent`.
*   `urls` (query, string) Includes scripts with a URL that contains one or more URL-encoded URLs separated by commas.  
    Pattern: ^.\*$. Example: `https://example.com/script1.js,https://example.com/script2.js`.
*   `page` (query, string) When set to 'all', retrieves all scripts without pagination, disregarding offset and limit parameters.  
    Allowed values: `all`. Example: `all`.
*   `limit` (query, integer (int32)) Number of records to retrieve per request. Must be between 1 (minimum) and 200 (maximum). Defaults to 200.  
    Default: `200`. Minimum: 1. Maximum: 200.
*   `offset` (query, integer (int32)) Used to retrieve the results based on a particular resource offset.  
    Default: `0`. Minimum: 0.

#### Responses

*   **200** List current page shield scripts.
    
    Media type: `application/json`. Schema: `PageShieldScriptListEnvelope`.
    
    _Example: PageShieldScriptListResponse_
    
    ```
    {
      "data": [
        {
          "id": "12345678901234asdfasfasdf",
          "url": "https://sfdc-test.net/on/demandware.static/Sites-SiteNemesis-Site/-/en_US//lib/jquery/ui/jquery-ui.min.js",
          "host": "sfdc-test.net",
          "addedAt": "2022-01-01T05:20:00Z",
          "firstSeenAt": "2022-01-01T05:20:00Z",
          "lastSeenAt": "2022-01-01T05:20:00Z",
          "fetchedAt": "2022-01-01T05:20:00Z",
          "domainReportedMalicious": false,
          "hash": "1243453456abc",
          "cryptoMiningScore": 1,
          "dataflowScore": 1,
          "jsIntegrityScore": 1,
          "mageCartScore": 2,
          "malwareScore": 1,
          "obfuscationScore": 2,
          "maliciousDomainCategories": [
            "Malware"
          ],
          "maliciousUrlCategories": [
            "Malware"
          ],
          "urlContainsCdnCgiPath": false,
          "urlReportedMalicious": false,
          "pageUrls": [
            "blog.test.salesforce.com/page1",
            "blog.test.salesforce.com/page2"
          ],
          "firstPageUrl": "blog.test.salesforce.com",
          "status": "active",
          "versions": []
        }
      ]
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Fetch a script detected by Page Shield by script ID.

`GET /organizations/{organizationId}/zones/{zoneId}/page-shield/scripts/{scriptId}`

Operation ID: `getPageShieldScript`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN PCI 4.0 Compliance Tools](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-pci-4-compliance.html).

#### Parameters

*   `scriptId` (path, string, required) The unique identifier of a Page Shield script.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** A script detected by Page Shield by script ID.
    
    Media type: `application/json`. Schema: `PageShieldScriptEnvelope`.
    
    _Example: PageShieldScriptResponse_
    
    ```
    {
      "data": {
        "id": "12345678901234asdfasfasdf",
        "url": "https://sfdc-test.net/on/demandware.static/Sites-SiteNemesis-Site/-/en_US//lib/jquery/ui/jquery-ui.min.js",
        "host": "sfdc-test.net",
        "addedAt": "2022-01-01T05:20:00Z",
        "firstSeenAt": "2022-01-01T05:20:00Z",
        "lastSeenAt": "2022-01-01T05:20:00Z",
        "fetchedAt": "2022-01-01T05:20:00Z",
        "domainReportedMalicious": false,
        "hash": "1243453456abc",
        "cryptoMiningScore": 1,
        "dataflowScore": 1,
        "jsIntegrityScore": 1,
        "mageCartScore": 2,
        "malwareScore": 1,
        "obfuscationScore": 2,
        "maliciousDomainCategories": [
          "Malware"
        ],
        "maliciousUrlCategories": [
          "Malware"
        ],
        "urlContainsCdnCgiPath": false,
        "urlReportedMalicious": false,
        "pageUrls": [
          "blog.test.salesforce.com/page1",
          "blog.test.salesforce.com/page2"
        ],
        "firstPageUrl": "blog.test.salesforce.com",
        "status": "active",
        "versions": []
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve zone information.

`GET /organizations/{organizationId}/zones/info`

Operation ID: `getZonesInfo`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve information about all zones for the organization. This endpoint provides an overview of all CDN zones, including their status, configuration, and basic details.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `limit` (query, integer (int32)) Number of records to retrieve per request. Must be between 1 (minimum) and 50 (maximum). Defaults to 25.  
    Default: `25`. Minimum: 1. Maximum: 50.
*   `offset` (query, integer (int32)) Used to retrieve the results based on a particular resource offset.  
    Default: `0`. Minimum: 0.

#### Responses

*   **200** Successfully retrieved zone information requested by the caller.
    
    Media type: `application/json`. Schema: `ZonesEnvelope`.
    
    _Example: ZonesGetResponse_
    
    ```
    {
      "data": [
        {
          "zoneId": "e4288c0a1f80fa5490b598d74c69bde4",
          "name": "sfcc-cdn.net",
          "status": "pending"
        }
      ]
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve all WAF groups accessible to the caller.

`GET /organizations/{organizationId}/zones/{zoneId}/waf/groups`

Operation ID: `getWafGroups`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve all Web Application Firewall (WAF) groups accessible to the caller. This endpoint provides information about WAF groups and their configurations for the specified zone. Not applicable for zones using WAFv2. For zones created after the 24.5 release, use the endpoints for WAF managed rulesets.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully retrieved details of WAF groups to which the caller has access.
    
    Media type: `application/json`. Schema: `WafGroupsEnvelope`.
    
    _Example: WafGroupsGetResponse_
    
    ```
    {
      "data": [
        {
          "groupId": "f90712123fb02287348dd34c0a282bb9",
          "mode": "on",
          "description": "This WAF Group contains a number of rules that have been created to deal with specific attack types. "
        },
        {
          "groupId": "da9d75b083345c63f48e6fde5f617a8b",
          "mode": "on",
          "description": "This WAF Group contains rules to deal with known malicious traffic or patch flaws in specific web applications."
        }
      ]
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PUT Update the action or mode of a specific WAF group.

`PUT /organizations/{organizationId}/zones/{zoneId}/waf/groups/{groupId}`

Operation ID: `updateWafGroup`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Update the action or mode of a specific Web Application Firewall (WAF) group. Use this endpoint to modify the security settings and behavior of a WAF group. Not applicable for zones using WAFv2. For any zones created after the 24.5 release, use the endpoints for WAF managed rulesets.

#### Parameters

*   `groupId` (path, string, required) WAF Group that contains the WAF rules.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
    
    _Example_
    
    ```
    f90712123fb02287348dd34c0a282bb9
    ```
    
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `WafGroup`.

_Example: WafGroupPutRequestBodyExample_

```
{
  "action": "monitor",
  "mode": "on"
}
```

#### Responses

*   **200** Successfully updated the WAF group specified by the caller.
    
    Media type: `application/json`. Schema: `WafGroupEnvelope`.
    
    _Example: WafGroupPutResponse_
    
    ```
    {
      "data": {
        "groupId": "f90712123fb02287348dd34c0a282bb9",
        "mode": "on",
        "description": "This WAF Group contains a number of rules that have been created to deal with specific attack types. "
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve WAF rules for the WAF group specified by the caller.

`GET /organizations/{organizationId}/zones/{zoneId}/waf/rules`

Operation ID: `getWafRules`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve WAF rules for the WAF group specified by the caller. This endpoint provides information about the security rules configured for a specific WAF group. Not applicable for zones using WAFv2. For any zones created after the 24.5 release, use the endpoints for WAF managed rulesets.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `groupId` (query, string) WAF Group that contains the WAF rules.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
    
    _Example_
    
    ```
    f90712123fb02287348dd34c0a282bb9
    ```
    

#### Responses

*   **200** Successfully retrieved the WAF rules requested by the caller.
    
    Media type: `application/json`. Schema: `WafRulesEnvelope`.
    
    _Example: WafGroupPutResponse_
    
    ```
    {
      "data": [
        {
          "ruleId": "100001",
          "groupId": "f90712123fb02287348dd34c0a282bb9",
          "action": "monitor",
          "defaultAction": "challenge",
          "description": "Anomaly:Header:User-Agent - Missing"
        },
        {
          "ruleId": "100002",
          "groupId": "f90712123fb02287348dd34c0a282bb9",
          "action": "monitor",
          "defaultAction": "challenge",
          "description": "DoS - IE6 Binary POST"
        },
        {
          "ruleId": "100002A",
          "groupId": "f90712123fb02287348dd34c0a282bb9",
          "action": "monitor",
          "defaultAction": "challenge",
          "description": "DoS - CtrlFunc Botnet"
        }
      ]
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve details of a specific WAF rule.

`GET /organizations/{organizationId}/zones/{zoneId}/waf/rules/{ruleId}`

Operation ID: `getWafRule`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve details of a specific WAF rule by its ID. This endpoint provides comprehensive information about the rule's configuration and settings. Not applicable for zones using WAFv2. For any zones created after the 24.5 release, use the endpoints for WAF managed rulesets.

#### Parameters

*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully retrieved details of the WAF rule requested by the caller.
    
    Media type: `application/json`. Schema: `WafRuleEnvelope`.
    
    _Example: WafRuleGetResponse_
    
    ```
    {
      "data": {
        "ruleId": "100001",
        "groupId": "f90712123fb02287348dd34c0a282bb9",
        "action": "monitor",
        "defaultAction": "challenge",
        "description": "Anomaly:Header:User-Agent - Missing"
      }
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PUT Update the action of a specific WAF rule.

`PUT /organizations/{organizationId}/zones/{zoneId}/waf/rules/{ruleId}`

Operation ID: `updateWafRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Update the action of a specific WAF rule. Use this endpoint to modify the security behavior and response actions of a WAF rule. Not applicable for zones using WAFv2. For any zones created after the 24.5 release, use the endpoints for WAF managed rulesets.

#### Parameters

*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `WafRule`.

_Example: WafRulePutRequestBodyExample_

```
{
  "action": "monitor"
}
```

#### Responses

*   **200** Successfully updated the WAF rule specified by the caller.
    
    Media type: `application/json`. Schema: `WafRuleEnvelope`.
    
    _Example: WafRulePutResponse_
    
    ```
    {
      "data": {
        "ruleId": "100001",
        "groupId": "f90712123fb02287348dd34c0a282bb9",
        "action": "monitor",
        "defaultAction": "challenge",
        "description": "Anomaly:Header:User-Agent - Missing "
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve the speed settings for a zone.

`GET /organizations/{organizationId}/zones/{zoneId}/speed-settings`

Operation ID: `getSpeedSettings`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve speed settings for the specified zone. This endpoint provides information about performance optimizations.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully returned the speed settings requested by the caller.
    
    Media type: `application/json`. Schema: `SpeedSettingsEnvelope`.
    
    _Example: SpeedSettingsResponse_
    
    ```
    {
      "data": {
        "brotliCompression": "off",
        "http2Prioritization": "off",
        "webp": "off",
        "polish": "off",
        "earlyHints": "off",
        "http3": "off",
        "http2ToOrigin": "off"
      }
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update the speed settings for a zone.

`PATCH /organizations/{organizationId}/zones/{zoneId}/speed-settings`

Operation ID: `updateSpeedSettings`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Update speed settings for the specified zone. Use this endpoint to modify performance optimizations.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `SpeedSetting`.

_Example: SpeedSettingsPatchRequestBodyExample_

```
{
  "brotliCompression": "off",
  "http2Prioritization": "off"
}
```

#### Responses

*   **200** Successfully updated the speed settings requested by the caller.
    
    Media type: `application/json`. Schema: `SpeedSettingsEnvelope`.
    
    _Example: SpeedSettingsResponse_
    
    ```
    {
      "data": {
        "brotliCompression": "off",
        "http2Prioritization": "off",
        "webp": "off",
        "polish": "off",
        "earlyHints": "off",
        "http3": "off",
        "http2ToOrigin": "off"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve the security settings for a zone.

`GET /organizations/{organizationId}/zones/{zoneId}/security-settings`

Operation ID: `getSecuritySettings`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve security settings for the specified zone. This endpoint provides information about security configurations and protection settings.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully returned security settings for zone.
    
    Media type: `application/json`. Schema: `SecuritySettingsEnvelope`.
    
    _Example: SecuritySettingsResponse_
    
    ```
    {
      "data": {
        "hsts": {
          "enabled": false,
          "includeSubdomains": false,
          "maxAge": 200,
          "preload": false
        },
        "securityLevel": "medium",
        "tls13Enabled": false,
        "alwaysUseHttps": true
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update the security settings for a zone.

`PATCH /organizations/{organizationId}/zones/{zoneId}/security-settings`

Operation ID: `updateSecuritySettings`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Update security settings for the specified zone. Use this endpoint to modify security configurations and protection settings.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `SecuritySetting`.

_Example: SecuritySettingsUpdateRequestBodyExample_

```
{
  "hsts": {
    "enabled": false,
    "preload": true
  },
  "securityLevel": "high",
  "tls13Enabled": true,
  "alwaysUseHttps": true
}
```

#### Responses

*   **200** Successfully updated the security settings.
    
    Media type: `application/json`. Schema: `SecuritySettingsEnvelope`.
    
    _Example SecuritySettingsResponse: same as GET /organizations/{organizationId}/zones/{zoneId}/security-settings 200 response._
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Purge the cache for the host specified in the request body.

`POST /organizations/{organizationId}/zones/{zoneId}/cachepurge`

Operation ID: `cachePurge`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Purge cache for the specified zone. Use this endpoint to clear cached content and force fresh content to be fetched from origin servers. Unlike storefronts, SCAPI only uses server-side web tier caching, and eCDN edge caching is not at all applicable to SCAPI.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `CachePurgeRequest`.

_Example: CachePurgeRequest_

```
{
  "path": "www.sfcc-ecdn-test5.net/dw/shop/v21_9/products",
  "tags": [
    "product-123",
    "category-456"
  ]
}
```

#### Responses

*   **200** Successfully returned the complete operationId statuses for the rule list operations that the server processed.
    
    Media type: `application/json`. Schema: `CachePurgeResponseEnvelope`.
    
    _Example: CachePurgeResponse_
    
    ```
    {
      "data": {
        "cachePurged": true,
        "details": "Cache purged successfully"
      }
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Enable or disable the OCAPI Caching page rule.

`PATCH /organizations/{organizationId}/zones/{zoneId}/ocapicachingpagerule`

Operation ID: `toggleOcapiCachingPageRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Use this endpoint to toggle the caching behavior for caching requests.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `OCAPICachingToggleRequest`.

_Example: CachingToggleRequest_

```
{
  "enableOCAPICachingPageRule": true
}
```

#### Responses

*   **200** Successfully returned the current state of the Caching page rule.
    
    Media type: `application/json`. Schema: `OCAPICachingToggleRequest`.
    
    _Example: CachingToggleResponse_
    
    ```
    {
      "data": {
        "enableOCAPICachingPageRule": true
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve existing cache rules.

`GET /organizations/{organizationId}/zones/{zoneId}/cache/rules`

Operation ID: `getCacheRules`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve the list of cache rules for a zone.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully returned the list of cache rules.
    
    Media type: `application/json`. Schema: `CacheRulesEnvelope`.
    
    _Example: CacheRulesResponse_
    
    ```
    {
      "data": [
        {
          "ruleId": "2c0fc9fa937b11eaa1b71c4d701ab86e",
          "description": "Cache static assets on product pages",
          "expression": "(http.request.uri.path matches \"^/product/.*\")",
          "action": "cache",
          "excludeQueryStrings": [
            "gclid",
            "utm_campaign"
          ],
          "ignoreQueryStringsOrder": true,
          "respectStrongEtags": false,
          "lastUpdated": "2022-01-01T05:20:00Z",
          "enabled": true
        },
        {
          "ruleId": "ffffe61cf25e4ec49c34b029ff3060f7",
          "description": "Cache category pages",
          "expression": "(http.request.uri.path matches \"^/category/.*\")",
          "action": "cache",
          "ignoreQueryStringsOrder": false,
          "respectStrongEtags": true,
          "lastUpdated": "2022-12-14T21:25:22.329194Z",
          "enabled": false
        }
      ]
    }
    ```
    
*   **401** You are not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** You do not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The requested resource was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Create a cache rule.

`POST /organizations/{organizationId}/zones/{zoneId}/cache/rules`

Operation ID: `createCacheRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Create a cache rule for a zone.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `CacheRulesPostRequest`.

_Example: CacheRulesPostRequestBodyExample_

```
{
  "description": "Cache static assets on product pages.",
  "expression": "(http.request.uri.path matches \"^/product/.*\")",
  "action": "cache",
  "excludeQueryStrings": [
    "gclid",
    "utm_campaign"
  ],
  "ignoreQueryStringsOrder": true,
  "respectStrongEtags": false,
  "enabled": true
}
```

#### Responses

*   **201** Successfully created the cache rule.
    
    Media type: `application/json`. Schema: `CacheRulesEnvelope`.
    
    _Example: CacheRuleResponse_
    
    ```
    {
      "data": [
        {
          "ruleId": "2c0fc9fa937b11eaa1b71c4d701ab86e",
          "description": "Cache static assets on product pages",
          "expression": "(http.request.uri.path matches \"^/product/.*\")",
          "action": "cache",
          "excludeQueryStrings": [
            "gclid",
            "utm_campaign"
          ],
          "ignoreQueryStringsOrder": true,
          "respectStrongEtags": false,
          "lastUpdated": "2022-01-01T05:20:00Z",
          "enabled": true
        }
      ]
    }
    ```
    
*   **400** Invalid request
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** You are not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** You do not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Delete a cache rule.

`DELETE /organizations/{organizationId}/zones/{zoneId}/cache/rules/{ruleId}`

Operation ID: `deleteCacheRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Delete an existing cache rule.

#### Parameters

*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **204** Successfully deleted the cache rule.
*   **401** You are not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** You do not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The requested resource was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update a cache rule.

`PATCH /organizations/{organizationId}/zones/{zoneId}/cache/rules/{ruleId}`

Operation ID: `updateCacheRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Update an existing cache rule.

#### Parameters

*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `CacheRulesPatchRequest`.

_Example: CacheRulesPatchRequestBodyExample_

```
{
  "description": "Updated description for the cache rule",
  "enabled": false
}
```

#### Responses

*   **200** Successfully updated the cache rule.
    
    Media type: `application/json`. Schema: `CacheRulesEnvelope`.
    
    _Example CacheRuleResponse: same as POST /organizations/{organizationId}/zones/{zoneId}/cache/rules 201 response._
    
*   **400** Invalid request
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** You are not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** You do not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The requested resource was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET List certificates for a zone.

`GET /organizations/{organizationId}/zones/{zoneId}/certificates`

Operation ID: `getCertificates`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

For information on automatic certificates, see [eCDN Automatic Certificates](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-automatic-certs.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `limit` (query, integer (int32)) Number of records to retrieve per request. Must be between 1 (minimum) and 50 (maximum). Defaults to 25.  
    Default: `25`. Minimum: 1. Maximum: 50.
*   `offset` (query, integer (int32)) Used to retrieve the results based on a particular resource offset.  
    Default: `0`. Minimum: 0.

#### Responses

*   **200** Successfully retrieved the list of certificates for the specified zone.
    
    Media type: `application/json`. Schema: `CertificatesEnvelope`.
    
    _Example: CertificatesGetResponse1_
    
    ```
    {
      "data": [
        {
          "certificateId": "14b72e2c-db8e-40ec-9f89-d80ca431a36e",
          "status": "PENDING_VALIDATION",
          "minTlsVersion": "1.2",
          "certificateType": "automatic",
          "certificateAuthority": "google",
          "certificateValidation": "txt",
          "certificateVerificationTXTName": "_acme-challenge.test.example.com",
          "certificateVerificationTXTValue": "DBCtxdyQSyo9eXxys-uGVCwPFHLsc8_lu11QetQz4IA",
          "certificateVerificationStatus": "PENDING",
          "customHostnameId": "6c8beb36-a679-4eca-a09a-e3d6aca12787",
          "customHostname": "test.example.com",
          "customHostnameStatus": "ACTIVE"
        },
        {
          "certificateId": "16b3f671-de15-4ba8-8c02-84ba011b7751",
          "hosts": [
            "shop.example.com"
          ],
          "expiresOn": "2024-05-27T22:58:10Z",
          "uploadedOn": "2024-02-27T22:58:11Z",
          "issuer": "LetsEncrypt",
          "signature": "SHA256WithRSA",
          "status": "ACTIVE",
          "minTlsVersion": "1.2",
          "certificateType": "automatic",
          "certificateAuthority": "lets_encrypt",
          "certificateValidation": "http",
          "customHostnameId": "dd625c6d-8553-4d14-abc2-6d747866c8d9",
          "customHostname": "shop.example.com",
          "customHostnameStatus": "ACTIVE"
        },
        {
          "certificateId": "f135013c-2bf7-4225-b043-84cf35a93e12",
          "hosts": [
            "*.example.com"
          ],
          "expiresOn": "2024-04-09T20:36:39Z",
          "uploadedOn": "2024-03-19T22:32:41Z",
          "issuer": "LetsEncrypt",
          "signature": "SHA256WithRSA",
          "status": "ACTIVE",
          "minTlsVersion": "1.2",
          "certificateType": "custom",
          "customHostnameId": "6567aee6-bdbe-4cb1-9f4b-73209c5e867a",
          "customHostname": "www.example.com",
          "customHostnameStatus": "ACTIVE"
        }
      ]
    }
    ```
    
    _Example: CertificatesGetResponse2_
    
    ```
    {
      "data": [
        {
          "certificateId": "dc95610a-9a20-4e24-b6d6-232df5fc32d1",
          "hosts": [
            "shop.example.com"
          ],
          "expiresOn": "2024-05-14T23:00:45Z",
          "uploadedOn": "2024-03-19T21:28:36Z",
          "issuer": "LetsEncrypt",
          "signature": "SHA256WithRSA",
          "status": "ACTIVE",
          "certificateType": "custom_legacy"
        },
        {
          "certificateId": "3a2a71c6-c00f-41c4-86dd-d6dc434851d5",
          "hosts": [
            "www.example.com"
          ],
          "expiresOn": "2024-04-15T17:07:59Z",
          "uploadedOn": "2024-03-19T21:28:36Z",
          "issuer": "LetsEncrypt",
          "signature": "SHA256WithRSA",
          "status": "ACTIVE",
          "certificateType": "custom_legacy"
        }
      ]
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Add certificate for a zone.

`POST /organizations/{organizationId}/zones/{zoneId}/certificates`

Operation ID: `addCertificateForZone`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

For information on automatic certificates, see [eCDN Automatic Certificates](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-automatic-certs.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `CertificateRequest`.

_Example: CertificatePostRequestBodyExample_

```
{
  "hostname": "www.salesforce.com",
  "certificate": "-----BEGIN CERTIFICATE-----\nMIIDtTCCAp2gAwIBAgIJAMHAwfXZ5PWMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwODI0MTY0MzAxWhcNMTYxMTIyMTY0MzAxWjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmGdtcGbg/1\nCGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKnabIRuGvB\nKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpidtnKX/a+5\n0GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+pyFxIXjbEI\ndZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pEewooaeO2\nizNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABo4GnMIGkMB0GA1UdDgQWBBT/LbE4\n9rWf288N6sJA5BRb6FJIGDB1BgNVHSMEbjBsgBT/LbE49rWf288N6sJA5BRb6FJI\nGKFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV\nBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAMHAwfXZ5/PWMAwGA1UdEwQF\nMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHHFwl0tH0quUYZYO0dZYt4R7SJ0pCm2\n2satiyzHl4OnXcHDpekAo7/a09c6Lz6AU83cKy/+x3/djYHXWba7HpEu0dR3ugQP\nMlr4zrhd9xKZ0KZKiYmtJH+ak4OM4L3FbT0owUZPyjLSlhMtJVcoRp5CJsjAMBUG\nSvD8RX+T01wzox/Qb+lnnNnOlaWpqu8eoOenybxKp1a9ULzIVvN/LAcc+14vioFq\n2swRWtmocBAs8QR9n4uvbpiYvS8eYueDCWMM4fvFfBhaDZ3N9IbtySh3SpFdQDhw\nYbjM2rxXiyLGxB4Bol7QTv4zHif7Zt89FReT/NBy4rzaskDJY5L6xmY=\n-----END CERTIFICATE-----",
  "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmG\ndtcGbg/1CGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKn\nabIRuGvBKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpid\ntnKX/a+50GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+py\nFxIXjbEIdZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pE\newooaeO2izNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABAoIBACbhTYXBZYKmYPCb\nHBR1IBlCQA2nLGf0qRuJNJZg5iEzXows/6tc8YymZkQE7nolapWsQ+upk2y5Xdp/\naxiuprIs9JzkYK8Ox0r+dlwCG1kSW+UAbX0bQ/qUqlsTvU6muVuMP8vZYHxJ3wmb\n+ufRBKztPTQ/rYWaYQcgC0RWI20HTFBMxlTAyNxYNWzX7RKFkGVVyB9RsAtmcc8g\n+j4OdosbfNoJPS0HeIfNpAznDfHKdxDk2Yc1tV6RHBrC1ynyLE9+TaflIAdo2MVv\nKLMLq51GqYKtgJFIlBRPQqKoyXdz3fGvXrTkf/WY9QNq0J1Vk5ERePZ54mN8iZB7\n9lwy/AkCgYEA6FXzosxswaJ2wQLeoYc7ceaweX/SwTvxHgXzRyJIIT0eJWgx13Wo\n/WA3Iziimsjf6qE+SI/8laxPp2A86VMaIt3Z3mJN/CqSVGw8LK2AQst+OwdPyDMu\niacE8lj/IFGC8mwNUAb9CzGU3JpU4PxxGFjS/eMtGeRXCWkK4NE+G08CgYEA1Kp9\nN2JrVlqUz+gAX+LPmE9OEMAS9WQSQsfCHGogIFDGGcNf7+uwBM7GAaSJIP01zcoe\nVAgWdzXCv3FLhsaZoJ6RyLOLay5phbu1iaTr4UNYm5WtYTzMzqh8l1+MFFDl9xDB\nvULuCIIrglM5MeS/qnSg1uMoH2oVPj9TVst/ir8CgYEAxrI7Ws9Zc4Bt70N1As+U\nlySjaEVZCMkqvHJ6TCuVZFfQoE0r0whdLdRLU2PsLFP+q7qaeZQqgBaNSKeVcDYR\n9B+nY/jOmQoPewPVsp/vQTCnE/R81spu0mp0YI6cIheT1Z9zAy322svcc43JaWB7\nmEbeqyLOP4Z4qSOcmghZBSECgYACvR9Xs0DGn+wCsW4vze/2ei77MD4OQvepPIFX\ndFZtlBy5ADcgE9z0cuVB6CiL8DbdK5kwY9pGNr8HUCI03iHkW6Zs+0L0YmihfEVe\nPG19PSzK9CaDdhD9KFZSbLyVFmWfxOt50H7YRTTiPMgjyFpfi5j2q348yVT0tEQS\nfhRqaQKBgAcWPokmJ7EbYQGeMbS7HC8eWO/RyamlnSffdCdSc7ue3zdVJxpAkQ8W\nqu80pEIF6raIQfAf8MXiiZ7auFOSnHQTXUbhCpvDLKi0Mwq3G8Pl07l+2s6dQG6T\nlv6XTQaMyf6n1yjzL+fzDrH3qXMxHMO/b13EePXpDMpY7HQpoLDi\n-----END RSA PRIVATE KEY-----"
}
```

#### Responses

*   **201** Returned information about the added certificate.
    
    Media type: `application/json`. Schema: `CertificateEnvelope`.
    
    _Example: CertificatePostResponse1_
    
    ```
    {
      "data": {
        "certificateId": "730a1be4-22d7-11eb-aff1-0242ac120002",
        "status": "ACTIVE",
        "hosts": [
          "salesforce.com"
        ],
        "expiresOn": "2022-01-12T04:15:57Z",
        "uploadedOn": "2020-01-12T04:15:57Z",
        "issuer": "DigiCert",
        "signature": "SHA256WithRSA",
        "certificateType": "custom",
        "customHostnameVerificationTXTName": "_salesforce.com",
        "customHostnameVerificationTXTValue": "4c9c3f4f-2e91-4c5d-a902-f12f9c285b9e",
        "customHostnameId": "465a48f6-3d98-4c15-9312-211984ee8629",
        "customHostname": "test.salesforce.com",
        "customHostnameStatus": "ACTIVE"
      }
    }
    ```
    
    _Example: CertificatePostResponse2_
    
    ```
    {
      "data": {
        "certificateId": "730a1be4-22d7-11eb-aff1-0242ac120002",
        "hosts": [
          "salesforce.com"
        ],
        "expiresOn": "2022-01-12T04:15:57Z",
        "uploadedOn": "2020-01-12T04:15:57Z",
        "status": "PENDING",
        "certificateType": "automatic",
        "certificateAuthority": "google",
        "certificateValidation": "txt",
        "certificateVerificationTXTName": "_acme-challenge.test.example.com",
        "certificateVerificationTXTValue": "SH5Yet8S5dBwPXcRcCjXdf9FXMBVnQjihQ8oN8LoMv0",
        "certificateVerificationStatus": "PENDING",
        "customHostnameVerificationTXTName": "_salesforce.com",
        "customHostnameVerificationTXTValue": "4c9c3f4f-2e91-4c5d-a902-f12f9c285b9e",
        "customHostnameId": "465a48f6-3d98-4c15-9312-211984ee8629",
        "customHostname": "test.salesforce.com",
        "customHostnameStatus": "ACTIVE"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **409** The request sent by the caller has conflicts.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Conflict_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/conflicted",
      "title": "Resource Conflict",
      "detail": "The request made for the resource is not valid."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Delete a custom hostname and the certificate associated with it. Note that a valid certificate is necessary for a site to remain operational. DELETING A CERTIFICATE THAT IS IN USE CAN RESULT IN DOWNTIME.

`DELETE /organizations/{organizationId}/zones/{zoneId}/certificates/{certificateId}`

Operation ID: `deleteCertificate`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

This operation removes both the custom hostname configuration and the associated SSL certificate.

#### Parameters

*   `certificateId` (path, string, required) The unique identifier of a certificate.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **204** Successfully deleted the custom hostname and the certificate associated with it.
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update the certificate for a given certificateId for a particular zone.

`PATCH /organizations/{organizationId}/zones/{zoneId}/certificates/{certificateId}`

Operation ID: `updateCertificate`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

For information on automatic certificates, see [eCDN Automatic Certificates](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-automatic-certs.html).

#### Parameters

*   `certificateId` (path, string, required) The unique identifier of a certificate.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `CertificateRequest`.

_Example: CertificateUpdateRequestBodyExample_

```
{
  "hostname": "www.salesforce.com",
  "certificate": "-----BEGIN CERTIFICATE-----\nMIIDtTCCAp2gAwIBAgIJAMHAwfXZ5PWMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwODI0MTY0MzAxWhcNMTYxMTIyMTY0MzAxWjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmGdtcGbg/1\nCGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKnabIRuGvB\nKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpidtnKX/a+5\n0GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+pyFxIXjbEI\ndZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pEewooaeO2\nizNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABo4GnMIGkMB0GA1UdDgQWBBT/LbE4\n9rWf288N6sJA5BRb6FJIGDB1BgNVHSMEbjBsgBTLbE49rWf288N6sJA5BRb6FJI\nGKFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV\nBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAMHAwfXZ5/PWMAwGA1UdEwQF\nMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHHFwl0tH0quUYZYO0dZYt4R7SJ0pCm2\n2satiyzHl4OnXcHDpekAo7/a09c6Lz6AU83cKy/+x3/djYHXWba7HpEu0dR3ugQP\nMlr4zrhd9xKZ0KZKiYmtJH+ak4OM4L3FbT0owUZPyjLSlhMtJVcoRp5CJsjAMBUG\nSvD8RX+T01wzox/Qb+lnnNnOlaWpqu8eoOenybxKp1a9ULzIVvN/LAcc+14vioFq\n2swRWtmocBAs8QR9n4uvbpiYvS8eYueDCWMM4fvFfBhaDZ3N9IbtySh3SpFdQDhw\nYbjM2rxXiyLGxB4Bol7QTv4zHif7Zt89FReT/NBy4rzaskDJY5L6xmY=\n-----END CERTIFICATE-----",
  "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmG\ndtcGbg/1CGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKn\nabIRuGvBKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpid\ntnKX/a+50GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+py\nFxIXjbEIdZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pE\newooaeO2izNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABAoIBACbhTYXBZYKmYPCb\nHBR1IBlCQA2nLGf0qRuJNJZg5iEzXows/6tc8YymZkQE7nolapWsQ+upk2y5Xdp/\naxiuprIs9JzkYK8Ox0r+dlwCG1kSW+UAbX0bQ/qUqlsTvU6muVuMP8vZYHxJ3wmb\n+ufRBKztPTQ/rYWaYQcgC0RWI20HTFBMxlTAyNxYNWzX7RKFkGVVyB9RsAtmcc8g\n+j4OdosbfNoJPS0HeIfNpAznDfHKdxDk2Yc1tV6RHBrC1ynyLE9+TaflIAdo2MVv\nKLMLq51GqYKtgJFIlBRPQqKoyXdz3fGvXrTkf/WY9QNq0J1Vk5ERePZ54mN8iZB7\n9lwy/AkCgYEA6FXzosxswaJ2wQLeoYc7ceaweX/SwTvxHgXzRyJIIT0eJWgx13Wo\n/WA3Iziimsjf6qE+SI/8laxPp2A86VMaIt3Z3mJN/CqSVGw8LK2AQst+OwdPyDMu\niacE8lj/IFGC8mwNUAb9CzGU3JpU4PxxGFjS/eMtGeRXCWkK4NE+G08CgYEA1Kp9\nN2JrVlqUz+gAX+LPmE9OEMAS9WQSQsfCHGogIFDGGcNf7+uwBM7GAaSJIP01zcoe\nVAgWdzXCv3FLhsaZoJ6RyLOLay5phbu1iaTr4UNYm5WtYTzMzqh8l1+MFFDl9xDB\nvULuCIIrglM5MeS/qnSg1uMoH2oVPj9TVst/ir8CgYEAxrI7Ws9Zc4Bt70N1As+U\nlySjaEVZCMkqvHJ6TCuVZFfQoE0r0whdLdRLU2PsLFP+q7qaeZQqgBaNSKeVcDYR\n9B+nY/jOmQoPewPVsp/vQTCnE/R81spu0mp0YI6cIheT1Z9zAy322svcc43JaWB7\nmEbeqyLOP4Z4qSOcmghZBSECgYACvR9Xs0DGn+wCsW4vze/2ei77MD4OQvepPIFX\ndFZtlBy5ADcgE9z0cuVB6CiL8DbdK5kwY9pGNr8HUCI03iHkW6Zs+0L0YmihfEVe\nPG19PSzK9CaDdhD9KFZSbLyVFmWfxOt50H7YRTTiPMgjyFpfi5j2q348yVT0tEQS\nfhRqaQKBgAcWPokmJ7EbYQGeMbS7HC8eWO/RyamlnSffdCdSc7ue3zdVJxpAkQ8W\nqu80pEIF6raIQfAf8MXiiZ7auFOSnHQTXUbhCpvDLKi0Mwq3G8Pl07l+2s6dQG6T\nlv6XTQaMyf6n1yjzL+fzDrH3qXMxHMO/b13EePXpDMpY7HQpoLDi\n-----END RSA PRIVATE KEY-----"
}
```

#### Responses

*   **200** Successfully updated the certificate requested by the caller.
    
    Media type: `application/json`. Schema: `CertificateEnvelope`.
    
    _Example CertificateUpdateResponse2: same as POST /organizations/{organizationId}/zones/{zoneId}/certificates 201 response._
    
    _Example: CertificateUpdateResponse1_
    
    ```
    {
      "data": {
        "certificateId": "730a1be4-22d7-11eb-aff1-0242ac120002",
        "status": "ACTIVE",
        "hosts": [
          "salesforce.com"
        ],
        "expiresOn": "2022-01-12T04:15:57Z",
        "uploadedOn": "2020-01-12T04:15:57Z",
        "customHostnameVerificationTXTName": "_salesforce.com",
        "customHostnameVerificationTXTValue": "4c9c3f4f-2e91-4c5d-a902-f12f9c285b9e",
        "customHostnameId": "465a48f6-3d98-4c15-9312-211984ee8629",
        "customHostname": "test.salesforce.com",
        "customHostnameStatus": "ACTIVE",
        "certificateType": "custom"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Trigger the validation of a custom hostname.

`PATCH /organizations/{organizationId}/zones/{zoneId}/certificates/custom-hostnames/{customHostnameId}`

Operation ID: `validateCustomHostname`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

This endpoint initiates the DNS validation process for custom hostnames associated with the zone.

#### Parameters

*   `customHostnameId` (path, string, required) The unique identifier of a custom hostname.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully triggered the custom hostname validation process.
    
    Media type: `application/json`. Schema: `CustomHostnameValidationEnvelope`.
    
    _Example: CustomHostnamesPatchResponse_
    
    ```
    {
      "data": {
        "customHostnameId": "465a48f6-3d98-4c15-9312-211984ee8629",
        "customHostname": "test.salesforce.com",
        "customHostnameVerificationTXTName": "_salesforce.com",
        "customHostnameVerificationTXTValue": "4c9c3f4f-2e91-4c5d-a902-f12f9c285b9e",
        "customHostnameStatus": "ACTIVE"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Get all MRT rules.

`GET /organizations/{organizationId}/zones/{zoneId}/mrtrules`

Operation ID: `getMrtRules`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN Rules for Hybrid Implementations](https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/ecdn-rules-for-phased-headless-rollout.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully retrieved all MRT rules.
    
    Media type: `application/json`. Schema: `MRTRulesResponseEnvelope`.
    
    _Example: MrtRulesGetResponse_
    
    ```
    {
      "data": {
        "ruleset": {
          "id": "12345678901234asdfasfasdf1234567",
          "name": "MRT Rules",
          "lastUpdated": "2022-09-27T18:32:34.675182Z",
          "rules": [
            {
              "id": "12345678901234asdfasfasdf1234567",
              "expression": "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"/on/path1/.*\" or http.request.uri.path matches \"/on/path2/.*\" or http.request.uri.path matches \".*routeDetails=true\" or http.request.uri.path eq \"/path3.txt\" ))",
              "description": "Phased rollout rule for dev-customer.salesforce.com",
              "lastUpdated": "2022-09-15T21:14:42.372459Z",
              "ref": "12345678901234asdfasfasdf1234567",
              "enabled": true,
              "mrtHostname": "customer.mobify-storefront.com"
            },
            {
              "id": "12345678901234asdfasfasdf1234567",
              "expression": "(http.host in {\"test-customer.salesforce.com\" \"test2-customer.salesforce.com\"} and not ( http.request.uri.path matches \"^/path4/.*\" or http.request.uri.path matches \"^.*/path5/.*/products/.*\"))",
              "description": "Phased rollout rule for test-customer.salesforce.com",
              "lastUpdated": "2022-09-15T21:14:42.372459Z",
              "ref": "12345678901234asdfasfasdf1233333",
              "enabled": true,
              "mrtHostname": "customer.mobify-storefront.com"
            },
            {
              "id": "12345678901234asdfasfasdf1234567",
              "expression": "(http.host eq \"prd-customer.salesforce.com\" and not ( http.request.uri.path matches \"^/path4/.*\" or http.request.uri.path matches \"^.*/path5/.*/products/.*\"))",
              "description": "Phased rollout rule for prd-customer.salesforce.com",
              "lastUpdated": "2022-09-15T21:14:42.372459Z",
              "ref": "98745678901234asdfasfasdf1234567",
              "enabled": true,
              "mrtHostname": "customer.mobify-storefront.com"
            }
          ]
        }
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Create MRT rules to route to a new MRT environment.

`POST /organizations/{organizationId}/zones/{zoneId}/mrtrules`

Operation ID: `createMrtRules`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Rules for Hybrid Implementations](https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/ecdn-rules-for-phased-headless-rollout.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `MRTRulesPostRequest`.

_Example: MrtRulesPostRequestSingleHostnameBodyExample_

```
{
  "mrtHostname": "customer.mobify-storefront.com",
  "expressions": [
    "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"/on/path1/.*\" or http.request.uri.path matches \"/on/path2/.*\" or http.request.uri.path matches \".*routeDetails=true\" or http.request.uri.path eq \"/path3.txt\" ))"
  ],
  "descriptions": [
    "Phased rollout rule for dev-customer.salesforce.com"
  ]
}
```

_Example: MrtRulesPostRequestMultipleHostnamesBodyExample_

```
{
  "mrtHostname": "customer.mobify-storefront.com",
  "expressions": [
    "(http.host in {\"test-customer.salesforce.com\" \"test2-customer.salesforce.com\"} and not ( http.request.uri.path matches \"^/path4/.*\" or http.request.uri.path matches \"^.*/path5/.*/products/.*\"))"
  ],
  "descriptions": [
    "Phased rollout rule for test-customer.salesforce.com and test2-customer.salesforce.com"
  ]
}
```

#### Responses

*   **201** Created MRT rules to route to a new MRT environment.
    
    Media type: `application/json`. Schema: `MRTRulesResponseEnvelope`.
    
    _Example: MrtRulesPostResponseSingleHostname_
    
    ```
    {
      "data": {
        "ruleset": {
          "id": "12345678901234asdfasfasdf1234567",
          "name": "MRT Rules",
          "lastUpdated": "2022-09-27T18:32:34.675182Z",
          "rules": [
            {
              "id": "12345678901234asdfasfasdf1234567",
              "expression": "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"/on/path1/.*\" or http.request.uri.path matches \"/on/path2/.*\" or http.request.uri.path matches \".*routeDetails=true\" or http.request.uri.path eq \"/path3.txt\" ))",
              "description": "Phased rollout rule for dev-customer.salesforce.com",
              "lastUpdated": "2022-09-15T21:14:42.372459Z",
              "ref": "12345678901234asdfasfasdf1234567",
              "enabled": true,
              "mrtHostname": "customer.mobify-storefront.com"
            }
          ]
        }
      }
    }
    ```
    
    _Example: MrtRulesPostResponseMultipleHostnames_
    
    ```
    {
      "data": {
        "ruleset": {
          "id": "12345678901234asdfasfasdf1234567",
          "name": "MRT Rules",
          "lastUpdated": "2022-09-27T18:32:34.675182Z",
          "rules": [
            {
              "id": "12345678901234asdfasfasdf1234567",
              "expression": "(http.host in {\"test-customer.salesforce.com\" \"test2-customer.salesforce.com\"} and not ( http.request.uri.path matches \"^/path4/.*\" or http.request.uri.path matches \"^.*/path5/.*/products/.*\"))",
              "description": "Phased rollout rule for test-customer.salesforce.com and test2-customer.salesforce.com",
              "lastUpdated": "2022-09-15T21:14:42.372459Z",
              "ref": "12345678901234asdfasfasdf1234567",
              "enabled": true,
              "mrtHostname": "customer.mobify-storefront.com"
            }
          ]
        }
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update the MRT environment hostname or add MRT rules to route to an existing MRT environment.

`PATCH /organizations/{organizationId}/zones/{zoneId}/mrtrules`

Operation ID: `updateMrtRuleset`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Rules for Hybrid Implementations](https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/ecdn-rules-for-phased-headless-rollout.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `MRTRulesetPatchRequest`.

_Example: MrtRulesetPatchRequestUpdateHostnameBodyExample_

```
{
  "oldMrtHostname": "old-hostname.mobify-storefront.com",
  "mrtHostname": "new-hostname.mobify-storefront.com"
}
```

_Example: MrtRulesetPatchRequestAddRulesBodyExample_

```
{
  "mrtHostname": "customer.mobify-storefront.com",
  "expressions": [
    "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"/on/path1/.*\" or http.request.uri.path matches \"/on/path2/.*\" or http.request.uri.path matches \".*routeDetails=true\" or http.request.uri.path eq \"/path3.txt\" ))",
    "(http.host in {\"test-customer.salesforce.com\" \"test2-customer.salesforce.com\"} and not ( http.request.uri.path matches \"^/path4/.*\" or http.request.uri.path matches \"^.*/path5/.*/products/.*\"))"
  ],
  "descriptions": [
    "Phased rollout rule for dev-customer.salesforce.com"
  ]
}
```

#### Responses

*   **200** Updated the MRT environment hostname or added MRT rules to route to an existing MRT environment.
    
    Media type: `application/json`. Schema: `MRTRulesResponseEnvelope`.
    
    _Example: MrtRulesetPatchResponseUpdateHostname_
    
    ```
    {
      "data": {
        "ruleset": {
          "id": "12345678901234asdfasfasdf1234567",
          "name": "MRT Rules",
          "lastUpdated": "2022-09-27T18:32:34.675182Z",
          "rules": [
            {
              "id": "12345678901234asdfasfasdf1234567",
              "expression": "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"/on/path1/.*\" or http.request.uri.path matches \"/on/path2/.*\" or http.request.uri.path matches \".*routeDetails=true\" or http.request.uri.path eq \"/path3.txt\" ))",
              "description": "Phased rollout rule for dev-customer.salesforce.com",
              "lastUpdated": "2022-09-15T21:14:42.372459Z",
              "ref": "12345678901234asdfasfasdf1234567",
              "enabled": true,
              "mrtHostname": "new-hostname.mobify-storefront.com"
            },
            {
              "id": "12345678901234asdfasfasdf1234568",
              "expression": "(http.host in {\"test-customer.salesforce.com\" \"test2-customer.salesforce.com\"} and not ( http.request.uri.path matches \"^/path4/.*\" or http.request.uri.path matches \"^.*/path5/.*/products/.*\"))",
              "description": "Phased rollout rule for test-customer.salesforce.com and test2-customer.salesforce.com",
              "lastUpdated": "2022-09-15T21:14:42.372459Z",
              "ref": "12345678901234asdfasfasdf1234568",
              "enabled": true,
              "mrtHostname": "new-hostname.mobify-storefront.com"
            }
          ]
        }
      }
    }
    ```
    
    _Example: MrtRulesetPatchResponseAddRules_
    
    ```
    {
      "data": {
        "ruleset": {
          "id": "12345678901234asdfasfasdf1234567",
          "name": "MRT Rules",
          "lastUpdated": "2022-09-27T18:32:34.675182Z",
          "rules": [
            {
              "id": "12345678901234asdfasfasdf1234567",
              "expression": "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"/on/path1/.*\" or http.request.uri.path matches \"/on/path2/.*\" or http.request.uri.path matches \".*routeDetails=true\" or http.request.uri.path eq \"/path3.txt\" ))",
              "description": "Phased rollout rule for dev-customer.salesforce.com",
              "lastUpdated": "2022-09-15T21:14:42.372459Z",
              "ref": "12345678901234asdfasfasdf1234567",
              "enabled": true,
              "mrtHostname": "customer.mobify-storefront.com"
            },
            {
              "id": "12345678901234asdfasfasdf1234568",
              "expression": "(http.host in {\"test-customer.salesforce.com\" \"test2-customer.salesforce.com\"} and not ( http.request.uri.path matches \"^/path4/.*\" or http.request.uri.path matches \"^.*/path5/.*/products/.*\"))",
              "description": "Phased rollout rule for test-customer.salesforce.com and test2-customer.salesforce.com",
              "lastUpdated": "2022-09-15T21:14:42.372459Z",
              "ref": "12345678901234asdfasfasdf1234568",
              "enabled": true,
              "mrtHostname": "customer.mobify-storefront.com"
            }
          ]
        }
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Delete the MRT ruleset and all rules within the ruleset.

`DELETE /organizations/{organizationId}/zones/{zoneId}/mrtrules/{rulesetId}`

Operation ID: `deleteMrtRuleset`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Rules for Hybrid Implementations](https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/ecdn-rules-for-phased-headless-rollout.html).

#### Parameters

*   `rulesetId` (path, string, required) The unique identifier of a managed ruleset.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **204** Deleted the MRT ruleset and all rules within the ruleset.
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Delete an MRT rule.

`DELETE /organizations/{organizationId}/zones/{zoneId}/mrtrules/{rulesetId}/rules/{ruleId}`

Operation ID: `deleteMrtRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Rules for Hybrid Implementations](https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/ecdn-rules-for-phased-headless-rollout.html).

#### Parameters

*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `rulesetId` (path, string, required) The unique identifier of a managed ruleset.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **204** Deleted an MRT rule.
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update an MRT rule.

`PATCH /organizations/{organizationId}/zones/{zoneId}/mrtrules/{rulesetId}/rules/{ruleId}`

Operation ID: `updateMrtRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Rules for Hybrid Implementations](https://developer.salesforce.com/docs/commerce/pwa-kit-managed-runtime/guide/ecdn-rules-for-phased-headless-rollout.html).

#### Parameters

*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `rulesetId` (path, string, required) The unique identifier of a managed ruleset.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `MRTRulePatchRequest`.

_Example: MrtRulePatchRequestBodyExample_

```
{
  "enabled": true,
  "expression": "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"^/path4/.*\" or http.request.uri.path matches \"^.*/path5/.*/products/.*\"))",
  "description": "Phased rollout rule for dev-customer.salesforce.com"
}
```

#### Responses

*   **200** Successfully updated the MRT rule.
    
    Media type: `application/json`. Schema: `MRTRulesResponseEnvelope`.
    
    _Example: MrtRulePatchResponse_
    
    ```
    {
      "data": {
        "ruleset": {
          "id": "12345678901234asdfasfasdf1234567",
          "name": "MRT Rules",
          "lastUpdated": "2022-09-15T21:14:42.372459Z",
          "rules": [
            {
              "id": "12345678901234asdfasfasdf1234567",
              "expression": "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"^/path4/.*\" or http.request.uri.path matches \"^.*/path5/.*/products/.*\"))",
              "description": "Phased rollout rule for dev-customer.salesforce.com",
              "lastUpdated": "2022-09-27T18:32:34.675182Z",
              "ref": "12345678901234asdfasfasdf1234567",
              "enabled": true,
              "mrtHostname": "customer.mobify-storefront.com"
            }
          ]
        }
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Create Logpush ownership token file.

`POST /organizations/{organizationId}/zones/{zoneId}/logpush/ownership`

Operation ID: `createLogpushOwnership`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Logpush](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-logpush.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `LogpushOwnershipPostRequest`.

_Example: LogpushOwnershipPostRequestBodyExample_

```
{
  "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256"
}
```

#### Responses

*   **201** Created a new Logpush Ownership token.
    
    Media type: `application/json`. Schema: `LogpushOwnershipPostResponse`.
    
    _Example: LogpushOwnershipPostResponse_
    
    ```
    {
      "data": {
        "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
        "fileName": "site-name/20230101/ownership-challenge-f1234567.txt"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET List Logpush job.

`GET /organizations/{organizationId}/zones/{zoneId}/logpush/jobs`

Operation ID: `listLogpushJob`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN Logpush](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-logpush.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Returned all jobs with details for the zone.
    
    Media type: `application/json`. Schema: `LogpushJobsEnvelope`.
    
    _Example: LogpushGetListJob_
    
    ```
    {
      "data": [
        {
          "jobId": 123456,
          "name": "example1-job-name",
          "logType": "http_requests",
          "logFields": [
            "ClientRequestBytes",
            "ClientRequestHost",
            "ClientRequestMethod"
          ],
          "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
          "lastComplete": "2023-03-14T02:09:32Z",
          "createdOn": "2023-01-01T00:00:27Z"
        },
        {
          "jobId": 123457,
          "name": "example2-job-name",
          "logType": "firewall_events",
          "logFields": [
            "RuleID",
            "ClientRequestUserAgent",
            "ClientRequestPath"
          ],
          "filter": "{\"where\":{\"and\":[{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/example-path\"}, {\"key\":\"EdgeResponseStatus\",\"operator\":\"in\",\"value\":[502, 503, 504, 520, 521, 522, 522, 523, 524, 525, 526, 530]}]}}",
          "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
          "lastComplete": "2023-03-22T02:09:32Z",
          "createdOn": "2023-01-03T00:00:27Z"
        },
        {
          "jobId": 123458,
          "name": "example3-job-name",
          "logType": "page_shield_events",
          "logFields": [
            "Action",
            "CSPDirective",
            "Host",
            "PageURL",
            "PolicyID",
            "ResourceType",
            "Timestamp",
            "URL",
            "URLHost"
          ],
          "destinationPath": "s3://customer-bucket/site-name/page-shield-events/{DATE}?region=us-east-1&sse=AES256",
          "lastComplete": "2025-01-02T02:09:32Z",
          "createdOn": "2025-01-01T00:00:27Z"
        }
      ]
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Create Logpush job.

`POST /organizations/{organizationId}/zones/{zoneId}/logpush/jobs`

Operation ID: `createLogpushJob`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Logpush](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-logpush.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `LogpushCreateRequest`.

_Example: LogpushCreateRequestBodyExample1_

```
{
  "name": "example-job-name",
  "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
  "ownershipChallengeToken": "abc00000000000000000000",
  "logFields": [
    "ClientRequestBytes",
    "ClientRequestHost",
    "ClientRequestMethod"
  ],
  "logType": "http_requests"
}
```

_Example: LogpushCreateRequestBodyExample2_

```
{
  "name": "example-job-name-with-filter",
  "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
  "ownershipChallengeToken": "abc00000000000000000000",
  "logFields": [
    "ClientRequestBytes",
    "ClientRequestPath",
    "ClientRequestHost",
    "ClientRequestMethod",
    "EdgeResponseStatus"
  ],
  "filter": "{\"where\":{\"and\":[{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/example-path\"}, {\"key\":\"EdgeResponseStatus\",\"operator\":\"in\",\"value\":[502, 503, 504, 520, 521, 522, 522, 523, 524, 525, 526, 530]}]}}",
  "logType": "http_requests"
}
```

_Example: LogpushCreateRequestBodyExample3_

```
{
  "name": "example-job-name",
  "destinationPath": "s3://customer-bucket/site-name/page-shield-events/{DATE}?region=us-east-1&sse=AES256",
  "ownershipChallengeToken": "abc00000000000000000000",
  "logFields": [
    "Action",
    "CSPDirective",
    "Host",
    "PageURL",
    "PolicyID",
    "ResourceType",
    "Timestamp",
    "URL",
    "URLHost"
  ],
  "logType": "page_shield_events"
}
```

#### Responses

*   **201** Successfully created the Logpush job and returned the job details.
    
    Media type: `application/json`. Schema: `LogpushEnvelope`.
    
    _Example: LogpushCreateResponse1_
    
    ```
    {
      "data": {
        "jobId": 123456,
        "name": "example-job-name",
        "logType": "http_requests",
        "logFields": [
          "ClientRequestBytes",
          "ClientRequestHost",
          "ClientRequestMethod"
        ],
        "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
        "enabled": false,
        "createdOn": "2023-01-01T00:00:27Z"
      }
    }
    ```
    
    _Example: LogpushCreateResponse2_
    
    ```
    {
      "data": {
        "jobId": 123456,
        "name": "example-job-name-with-filter",
        "logType": "http_requests",
        "logFields": [
          "ClientRequestBytes",
          "ClientRequestPath",
          "ClientRequestHost",
          "ClientRequestMethod",
          "EdgeResponseStatus"
        ],
        "filter": "{\"where\":{\"and\":[{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/example-path\"}, {\"key\":\"EdgeResponseStatus\",\"operator\":\"in\",\"value\":[502, 503, 504, 520, 521, 522, 522, 523, 524, 525, 526, 530]}]}}",
        "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
        "enabled": false,
        "createdOn": "2023-01-01T00:00:27Z"
      }
    }
    ```
    
    _Example: LogpushCreateResponse3_
    
    ```
    {
      "data": {
        "jobId": 123458,
        "name": "example-job-name",
        "logType": "page_shield_events",
        "logFields": [
          "Action",
          "CSPDirective",
          "Host",
          "PageURL",
          "PolicyID",
          "ResourceType",
          "Timestamp",
          "URL",
          "URLHost"
        ],
        "destinationPath": "s3://customer-bucket/site-name/page-shield-events/{DATE}?region=us-east-1&sse=AES256",
        "enabled": true,
        "createdOn": "2025-01-01T00:00:27Z"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to therequested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Get Logpush job details.

`GET /organizations/{organizationId}/zones/{zoneId}/logpush/jobs/{jobId}`

Operation ID: `getLogpushJob`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN Logpush](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-logpush.html).

#### Parameters

*   `jobId` (path, string, required) The unique identifier of a logpush job.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Returned job details for the specified Logpush job ID.
    
    Media type: `application/json`. Schema: `LogpushEnvelope`.
    
    _Example: LogpushGetJobById1_
    
    ```
    {
      "data": {
        "jobId": 123456,
        "name": "example-job-name",
        "logType": "http_requests",
        "logFields": [
          "ClientRequestBytes",
          "ClientRequestHost",
          "ClientRequestMethod"
        ],
        "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
        "lastComplete": "2023-03-14T02:09:32Z",
        "createdOn": "2023-01-01T00:00:27Z"
      }
    }
    ```
    
    _Example: LogpushGetJobById2_
    
    ```
    {
      "data": {
        "jobId": 123456,
        "name": "example-job-name",
        "logType": "http_requests",
        "logFields": [
          "ClientRequestBytes",
          "ClientRequestHost",
          "ClientRequestMethod"
        ],
        "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
        "lastComplete": "2023-03-14T02:09:32Z",
        "lastError": "2023-03-16T02:00:00Z",
        "errorMessage": "No permissions to write to destination bucket",
        "createdOn": "2023-01-01T00:00:27Z"
      }
    }
    ```
    
    _Example: LogpushGetJobById3_
    
    ```
    {
      "data": {
        "jobId": 123456,
        "name": "example-job-name",
        "logType": "http_requests",
        "logFields": [
          "ClientRequestBytes",
          "ClientRequestPath",
          "ClientRequestHost",
          "ClientRequestMethod",
          "EdgeResponseStatus"
        ],
        "filter": "{\"where\":{\"and\":[{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/example-path\"}, {\"key\":\"EdgeResponseStatus\",\"operator\":\"in\",\"value\":[502, 503, 504, 520, 521, 522, 522, 523, 524, 525, 526, 530]}]}}",
        "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
        "lastComplete": "2023-03-14T02:09:32Z",
        "createdOn": "2023-01-01T00:00:27Z"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PUT Update Logpush job.

`PUT /organizations/{organizationId}/zones/{zoneId}/logpush/jobs/{jobId}`

Operation ID: `updateLogpushJob`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Logpush](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-logpush.html).

#### Parameters

*   `jobId` (path, string, required) The unique identifier of a logpush job.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `LogpushUpdateRequest`.

_Example: LogpushUpdateRequestBodyExample_

```
{
  "enabled": true,
  "filter": "{\"where\":{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/example-path\"}}",
  "logFields": [
    "ClientRequestBytes",
    "ClientRequestHost",
    "ClientRequestMethod"
  ]
}
```

#### Responses

*   **200** Successfully enabled or disabled the Logpush job and returned job details.
    
    Media type: `application/json`. Schema: `LogpushEnvelope`.
    
    _Example: LogpushUpdateResponse_
    
    ```
    {
      "data": {
        "jobId": 123456,
        "name": "example-job-name",
        "enabled": true,
        "logType": "http_requests",
        "logFields": [
          "ClientRequestBytes",
          "ClientRequestHost",
          "ClientRequestMethod"
        ],
        "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
        "lastComplete": "2023-03-14T02:09:32Z",
        "lastError": "2023-01-01T00:00:27Z",
        "errorMessage": ""
      }
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Delete Logpush job by job ID.

`DELETE /organizations/{organizationId}/zones/{zoneId}/logpush/jobs/{jobId}`

Operation ID: `deleteLogpushJob`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Logpush](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-logpush.html).

#### Parameters

*   `jobId` (path, string, required) The unique identifier of a logpush job.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **204** Deleted the Logpush job for the specified job ID.
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Get a OWASP ModSecurity Core Rule Set.

`GET /organizations/{organizationId}/zones/{zoneId}/firewall/waf/packages/owasp`

Operation ID: `getOwaspWafPackage`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve OWASP WAF package information for the specified zone. This endpoint provides details about the OWASP security rules and configurations.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully retrieved the OWASP ModSecurity Core Rule Set.
    
    Media type: `application/json`. Schema: `WAFRulePackageEnvelope`.
    
    _Example: WafPackagesGetExample_
    
    ```
    {
      "data": {
        "id": "c504870194831cd12c3fc0284f294abb",
        "name": "OWASP ModSecurity Core Rule Set",
        "description": "OWASP Core Ruleset (2013) provides protection against common attack categories, including SQL Injection and Cross-Site Scripting.",
        "zone_id": "56702a674281951f541f9f304f7431f0",
        "detection_mode": "anomaly",
        "sensitivity": "low",
        "action_mode": "simulate"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Patch a OWASP ModSecurity Core Rule Set.

`PATCH /organizations/{organizationId}/zones/{zoneId}/firewall/waf/packages/owasp`

Operation ID: `patchOwaspWafPackage`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Update OWASP WAF package settings for the specified zone. Use this endpoint to modify OWASP security rule configurations.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `WafPackagePatchRequest`.

_Example: WafPackagesPatchRequestBodyExample_

```
{
  "sensitivity": "low",
  "action_mode": "simulate"
}
```

#### Responses

*   **200** Successfully patched the OWASP ModSecurity Core Rule Set.
    
    Media type: `application/json`. Schema: `WAFRulePackageEnvelope`.
    
    _Example WafPackagesGetExample: same as GET /organizations/{organizationId}/zones/{zoneId}/firewall/waf/packages/owasp 200 response._
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve existing custom rules.

`GET /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules`

Operation ID: `getCustomRules`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve existing custom rules. See [eCDN Custom Rules](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-custom-rules.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `limit` (query, integer (int32)) Number of records to retrieve per request. Must be between 1 (minimum) and 50 (maximum). Defaults to 25.  
    Default: `25`. Minimum: 1. Maximum: 50.
*   `offset` (query, integer (int32)) Used to retrieve the results based on a particular resource offset.  
    Default: `0`. Minimum: 0.

#### Responses

*   **200** Successfully returned the list of custom rules requested by the caller.
    
    Media type: `application/json`. Schema: `CustomRulesEnvelope`.
    
    _Example: CustomRulesResponse_
    
    ```
    {
      "data": [
        {
          "ruleId": "ffffe61cf25e4ec49c34b029ff3060f7",
          "description": "Block traffic for malformed URL requests",
          "expression": "(http.request.uri.path matches \"^/path1/.*\")",
          "actions": [
            "block"
          ],
          "lastUpdated": "2022-12-14T21:25:22.329194Z",
          "enabled": false
        },
        {
          "ruleId": "2c0fc9fa937b11eaa1b71c4d701ab86e",
          "description": "Skip user agent",
          "expression": "(http.user_agent contains \"Client\")",
          "actions": [
            "skip_custom_rules, skip_waf"
          ],
          "lastUpdated": "2022-12-14T21:30:34.263795Z",
          "enabled": true
        }
      ]
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Create a custom rule.

`POST /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules`

Operation ID: `createCustomRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Custom Rules](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-custom-rules.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `CustomRulesPostRequest`.

_Example: CustomRulesPostRequestBodyExample_

```
{
  "description": "Block traffic for malformed URL requests",
  "expression": "(http.request.uri.path matches \"^/path1/.*\")",
  "actions": [
    "block"
  ],
  "enabled": false,
  "position": {
    "before": "2c0fc9fa937b11eaa1b71c4d701ab86e"
  }
}
```

#### Responses

*   **201** Successfully created the custom rule requested by the caller.
    
    Media type: `application/json`. Schema: `CustomRuleEnvelope`.
    
    _Example: CustomRuleResponse_
    
    ```
    {
      "data": {
        "ruleId": "ffffe61cf25e4ec49c34b029ff3060f7",
        "description": "Block traffic for malformed URL requests",
        "expression": "(http.request.uri.path matches \"^/path1/.*\")",
        "actions": [
          "block"
        ],
        "lastUpdated": "2022-12-14T21:25:22.329194Z",
        "enabled": false
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update the order of all existing custom rules.

`PATCH /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules`

Operation ID: `updateOrderOfCustomRules`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Custom Rules](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-custom-rules.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `CustomRulesPatchOrderRequest`.

_Example: CustomRulesPatchOrderRequest_

```
{
  "ruleIds": [
    "ffffe61cf25e4ec49c34b029ff3060f7",
    "2c0fc9fa937b11eaa1b71c4d701ab86e"
  ]
}
```

#### Responses

*   **200** Successfully updated the order of existing custom rules as requested by the caller.
    
    Media type: `application/json`. Schema: `CustomRulesEnvelope`.
    
    _Example CustomRulesResponse: same as GET /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules 200 response._
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve a specific custom rule.

`GET /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules/{ruleId}`

Operation ID: `getCustomRule`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN Custom Rules](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-custom-rules.html).

#### Parameters

*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully returned the custom rule requested by the caller.
    
    Media type: `application/json`. Schema: `CustomRuleEnvelope`.
    
    _Example CustomRuleResponse: same as POST /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules 201 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Delete a specific custom rule.

`DELETE /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules/{ruleId}`

Operation ID: `deleteCustomRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Custom Rules](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-custom-rules.html).

#### Parameters

*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **204** Successfully deleted the custom rule requested by the caller.
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update a specific custom rule.

`PATCH /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules/{ruleId}`

Operation ID: `updateCustomRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Custom Rules](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-custom-rules.html).

#### Parameters

*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `CustomRulesPatchRequest`.

_Example: CustomRulesPatchRequest_

```
{
  "description": "Updated description for the custom rule",
  "expression": "(http.request.uri.path matches \"^/updated-path/.*\")",
  "actions": [
    "block"
  ]
}
```

#### Responses

*   **200** Successfully updated the custom rule requested by the caller.
    
    Media type: `application/json`. Schema: `CustomRuleEnvelope`.
    
    _Example CustomRuleResponse: same as POST /organizations/{organizationId}/zones/{zoneId}/firewall-custom/rules 201 response._
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve existing rate limiting rules.

`GET /organizations/{organizationId}/zones/{zoneId}/rate-limiting/rules`

Operation ID: `getRateLimitingRules`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN Rate Limiting Rules](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-rate-limiting-rules.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully returned the list of rate limiting rules requested by the caller.
    
    Media type: `application/json`. Schema: `RateLimitingRulesEnvelope`.
    
    _Example: RateLimitingRulesResponse_
    
    ```
    {
      "data": [
        {
          "ruleId": "ffffe61cf25e4ec49c34b029ff3060f7",
          "description": "Rate limit /path1",
          "expression": "http.request.uri.path matches \"^/path1/.*\"",
          "characteristics": [
            "cf.unique_visitor_id"
          ],
          "action": "block",
          "period": 60,
          "requestsPerPeriod": 50,
          "mitigationTimeout": 600,
          "countingExpression": "http.request.uri.path matches \"^/path1/.*\" and http.response.code eq 400",
          "enabled": false,
          "lastUpdated": "2022-12-14T21:25:22.329194Z"
        },
        {
          "ruleId": "2c0fc9fa937b11eaa1b71c4d701ab86e",
          "description": "Rate limit AS number 12345",
          "expression": "ip.src.asnum eq 12345",
          "characteristics": [
            "ip.src"
          ],
          "action": "managed_challenge",
          "period": 600,
          "requestsPerPeriod": 1000,
          "mitigationTimeout": 0,
          "enabled": true,
          "lastUpdated": "2022-12-14T21:47:24.323223Z"
        }
      ]
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Create a rate limiting rule.

`POST /organizations/{organizationId}/zones/{zoneId}/rate-limiting/rules`

Operation ID: `createRateLimitingRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Rate Limiting Rules](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-rate-limiting-rules.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `RateLimitingRulesPostRequest`.

_Example: RateLimitingRulesPostRequestBodyExample_

```
{
  "description": "Rate limit /path1",
  "expression": "http.request.uri.path matches \"^/path1/.*\"",
  "characteristics": [
    "cf.unique_visitor_id"
  ],
  "action": "block",
  "period": 60,
  "requestsPerPeriod": 50,
  "mitigationTimeout": 600,
  "countingExpression": "http.request.uri.path matches \"^/path1/.*\" and http.response.code eq 400",
  "enabled": false,
  "position": {
    "before": "2c0fc9fa937b11eaa1b71c4d701ab86e"
  }
}
```

#### Responses

*   **201** Successfully created the rate limiting rule requested by the caller.
    
    Media type: `application/json`. Schema: `RateLimitingRuleEnvelope`.
    
    _Example: RateLimitingRuleResponse_
    
    ```
    {
      "data": {
        "ruleId": "ffffe61cf25e4ec49c34b029ff3060f7",
        "description": "Rate limit /path1",
        "expression": "http.request.uri.path matches \"^/path1/.*\"",
        "characteristics": [
          "cf.unique_visitor_id"
        ],
        "action": "block",
        "period": 60,
        "requestsPerPeriod": 50,
        "mitigationTimeout": 600,
        "countingExpression": "http.request.uri.path matches \"^/path1/.*\" and http.response.code eq 400",
        "enabled": false,
        "lastUpdated": "2022-12-14T21:25:22.329194Z"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve a specific rate limiting rule.

`GET /organizations/{organizationId}/zones/{zoneId}/rate-limiting/rules/{ruleId}`

Operation ID: `getRateLimitingRule`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN Rate Limiting Rules](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-rate-limiting-rules.html).

#### Parameters

*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully returned the rate limiting rule requested by the caller.
    
    Media type: `application/json`. Schema: `RateLimitingRuleEnvelope`.
    
    _Example RateLimitingRuleResponse: same as POST /organizations/{organizationId}/zones/{zoneId}/rate-limiting/rules 201 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Delete a specific rate limiting rule.

`DELETE /organizations/{organizationId}/zones/{zoneId}/rate-limiting/rules/{ruleId}`

Operation ID: `deleteRateLimitingRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Rate Limiting Rules](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-rate-limiting-rules.html).

#### Parameters

*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **204** Successfully deleted the rate limiting rule requested by the caller.
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update a specific rate limiting rule.

`PATCH /organizations/{organizationId}/zones/{zoneId}/rate-limiting/rules/{ruleId}`

Operation ID: `updateRateLimitingRule`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN Rate Limiting Rules](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-rate-limiting-rules.html).

#### Parameters

*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `RateLimitingRulesPatchRequest`.

_Example: RateLimitingRulesPatchRequest_

```
{
  "description": "Updated rate limiting rule description",
  "expression": "http.request.uri.path matches \"^/updated-path/.*\"",
  "characteristics": [
    "cf.unique_visitor_id"
  ],
  "action": "block",
  "period": 120,
  "requestsPerPeriod": 100,
  "mitigationTimeout": 1200,
  "countingExpression": "http.request.uri.path matches \"^/updated-path/.*\" and http.response.code eq 400",
  "enabled": true
}
```

#### Responses

*   **200** Successfully updated the rate limiting rule requested by the caller.
    
    Media type: `application/json`. Schema: `RateLimitingRuleEnvelope`.
    
    _Example RateLimitingRuleResponse: same as POST /organizations/{organizationId}/zones/{zoneId}/rate-limiting/rules 201 response._
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve WAFv2 managed rulesets.

`GET /organizations/{organizationId}/zones/{zoneId}/firewall-managed/rulesets`

Operation ID: `getWafManagedRulesets`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN WAFv2](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-wafv2.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully returned the list of WAFv2 managed rulesets.
    
    Media type: `application/json`. Schema: `WAFManagedRulesetsEnvelope`.
    
    _Example: WAFManagedRulesetsResponse_
    
    ```
    {
      "data": [
        {
          "name": "Managed Ruleset",
          "rulesetId": "efb7b8c949ac4650a09736fc376e9aee",
          "action": "default",
          "enabled": true
        },
        {
          "name": "OWASP Core Ruleset",
          "rulesetId": "4814384a9e5d4991b9815dcfc25d2f1f",
          "action": "log",
          "anomalyScoreThreshold": 25,
          "anomalyScore": "high",
          "paranoiaLevel": 1,
          "enabled": true
        },
        {
          "name": "Leaked Crednetials Check Ruleset",
          "rulesetId": "c2e184081120413c86c3ab7e14069605",
          "action": "block",
          "enabled": true
        }
      ]
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update WAFv2 managed ruleset.

`PATCH /organizations/{organizationId}/zones/{zoneId}/firewall-managed/rulesets/{rulesetId}`

Operation ID: `updateWafManagedRuleset`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN WAFv2](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-wafv2.html).

#### Parameters

*   `rulesetId` (path, string, required) The unique identifier of a managed ruleset.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `WAFManagedRulesetRequest`.

_Example: WAFManagedRulesetsUpdateRequestBodyExample_

```
{
  "action": "js_challenge",
  "enabled": true
}
```

#### Responses

*   **200** Successfully updated the WAFv2 managed rulesets.
    
    Media type: `application/json`. Schema: `WAFManagedRulesetEnvelope`.
    
    _Example: WAFManagedRulesetsUpdateResponse_
    
    ```
    {
      "data": {
        "name": "Managed Ruleset",
        "rulesetId": "efb7b8c949ac4650a09736fc376e9aee",
        "action": "js_challenge",
        "enabled": true
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Retrieve all rules in the specified WAFv2 managed ruleset.

`GET /organizations/{organizationId}/zones/{zoneId}/firewall-managed/rulesets/{rulesetId}/rules`

Operation ID: `getWafManagedRulesInRuleset`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

See [eCDN WAFv2](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-wafv2.html).

#### Parameters

*   `rulesetId` (path, string, required) The unique identifier of a managed ruleset.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully returned the rules in the WAFv2 managed ruleset.
    
    Media type: `application/json`. Schema: `WAFManagedRulesEnvelope`.
    
    _Example: WAFManagedRulesResponse_
    
    ```
    {
      "data": [
        {
          "ruleId": "8ac8bc2a661e475d940980f9317f28e1",
          "action": "block",
          "score": 5,
          "categories": [
            "application-multi",
            "attack-generic",
            "capec-1000",
            "capec-210",
            "capec-220",
            "capec-272",
            "capec-274",
            "language-multi",
            "paranoia-level-1",
            "pci-12-1",
            "platform-multi"
          ],
          "description": "911100: Method is not allowed by policy",
          "lastUpdated": "2024-08-19T17:26:58.593021Z",
          "enabled": false
        },
        {
          "ruleId": "53065ac9bd9449f3895f1865467a0e6a",
          "action": "block",
          "score": 5,
          "categories": [
            "application-multi",
            "attack-reputation-scanner",
            "capec-1000",
            "capec-118",
            "capec-224",
            "capec-310",
            "capec-541",
            "language-multi",
            "paranoia-level-1",
            "pci-6-5-10",
            "platform-multi"
          ],
          "description": "913100: Found User-Agent associated with security scanner",
          "lastUpdated": "2024-08-19T17:26:58.593021Z",
          "enabled": true
        }
      ]
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update a WAF managed rule in the specified WAFv2 managed ruleset.

`PATCH /organizations/{organizationId}/zones/{zoneId}/firewall-managed/rulesets/{rulesetId}/rules/{ruleId}`

Operation ID: `updateWafManagedRuleInRuleset`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN WAFv2](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-wafv2.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `rulesetId` (path, string, required) The unique identifier of a managed ruleset.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `ruleId` (path, string, required) The unique identifier of a rule.  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `WAFManagedRuleRequest`.

_Example: WAFManagedRulesUpdateRequestBodyExample_

```
{
  "action": "log",
  "enabled": true
}
```

#### Responses

*   **200** Successfully updated the WAF managed rule in the specified WAFv2 managed ruleset.
    
    Media type: `application/json`. Schema: `WAFManagedRuleEnvelope`.
    
    _Example: WAFManagedRulesUpdateResponse_
    
    ```
    {
      "data": {
        "ruleId": "53065ac9bd9449f3895f1865467a0e6a",
        "action": "log",
        "score": 5,
        "categories": [
          "application-multi",
          "attack-reputation-scanner",
          "capec-1000",
          "capec-118",
          "capec-224",
          "capec-310",
          "capec-541",
          "language-multi",
          "paranoia-level-1",
          "pci-6-5-10",
          "platform-multi"
        ],
        "description": "913100: Found User-Agent associated with security scanner",
        "lastUpdated": "2024-08-19T17:26:58.593021Z",
        "enabled": true
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PUT Migrate a zone to WAFv2. Only applicable for existing zones using WAFv1.

`PUT /organizations/{organizationId}/zones/{zoneId}/firewall-managed/migration`

Operation ID: `migrateZoneToWafV2`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

See [eCDN WAFv2](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-wafv2.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully migrated the zone to WAFv2 and returned the WAF managed rulesets.
    
    Media type: `application/json`. Schema: `WAFManagedRulesetsEnvelope`.
    
    _Example WAFManagedRulesetsResponse: same as GET /organizations/{organizationId}/zones/{zoneId}/firewall-managed/rulesets 200 response._
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Get the origin header modification associated with a zone. Only the \`mrt\` type is supported.

`GET /organizations/{organizationId}/zones/{zoneId}/origin-header-modification/{type}`

Operation ID: `getOriginHeaderModification`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve origin header modification settings for the specified zone. This endpoint provides information about how headers are modified when forwarding requests to origin servers.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `type` (path, string, required) The type of origin header modification. Only the `mrt` type is supported.  
    Pattern: ^.\*$. Example: `mrt`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Successfully returned the origin header modification associated with a zone.
    
    Media type: `application/json`. Schema: `OriginHeaderModificationEnvelope`.
    
    _Example: MrtPutRequest_
    
    ```
    {
      "data": {
        "headerName": "x-sfdc-access-control",
        "headerValue": "********789",
        "lastUpdated": "2024-04-27T18:32:34.675182Z"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PUT Upsert an origin header modification. Only the \`mrt\` type is supported.

`PUT /organizations/{organizationId}/zones/{zoneId}/origin-header-modification/{type}`

Operation ID: `upsertOriginHeaderModification`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Create or update origin header modification settings for the specified zone. Use this endpoint to configure how headers are modified when forwarding requests to origin servers.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `type` (path, string, required) The type of origin header modification. Only the `mrt` type is supported.  
    Pattern: ^.\*$. Example: `mrt`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `OriginHeaderModificationPutRequest`.

_Example: MrtPutRequestBodyExample_

```
{
  "headerValue": "123456789"
}
```

#### Responses

*   **200** Successfully upserted the origin header modification.
    
    Media type: `application/json`. Schema: `OriginHeaderModificationEnvelope`.
    
    _Example: MrtPutUpdateResponse_
    
    ```
    {
      "data": {
        "headerName": "x-sfdc-access-control",
        "headerValue": "********789",
        "lastUpdated": "2024-04-27T18:32:34.675182Z"
      }
    }
    ```
    
*   **201** Successfully created the origin header modification.
    
    Media type: `application/json`. Schema: `OriginHeaderModificationEnvelope`.
    
    _Example: MrtPutCreateResponse_
    
    ```
    {
      "data": {
        "headerName": "x-sfdc-access-control",
        "headerValue": "********789",
        "lastUpdated": "2024-04-27T18:32:34.675182Z"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Delete the origin header modification associated with a zone. Only the \`mrt\` type is supported.

`DELETE /organizations/{organizationId}/zones/{zoneId}/origin-header-modification/{type}`

Operation ID: `deleteOriginHeaderModification`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Delete origin header modification settings for the specified zone. This endpoint removes header modification configurations.

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `type` (path, string, required) The type of origin header modification. Only the `mrt` type is supported.  
    Pattern: ^.\*$. Example: `mrt`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **204** Successfully deleted the origin header modification associated with a zone.
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Get cipher suites settings by zoneId.

`GET /organizations/{organizationId}/zones/{zoneId}/settings/ciphers`

Operation ID: `getCipherSuites`. Security: AmOAuth2 (sfcc.cdn-zones, sfcc.cdn-zones.rw).

Retrieve cipher suite settings for the specified zone. This endpoint provides information about supported encryption algorithms and security protocols. See [eCDN Supported Cipher Suites](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-cipher-suite-types.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Responses

*   **200** Retrieves current zone level cipher settings.
    
    Media type: `application/json`. Schema: `CipherSuitesEnvelope`.
    
    _Example: CipherSettingsGetResponse_
    
    ```
    {
      "data": {
        "ciphers": [
          "ECDHE-ECDSA-AES128-GCM-SHA256",
          "ECDHE-RSA-AES128-GCM-SHA256"
        ],
        "cipherSuiteType": "Custom"
      }
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PATCH Update cipher suite settings for the zone.

`PATCH /organizations/{organizationId}/zones/{zoneId}/settings/ciphers`

Operation ID: `updateCipherSuites`. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Update cipher suite settings for the specified zone. Use this endpoint to modify supported encryption algorithms and security protocols. See [eCDN Supported Cipher Suites](https://developer.salesforce.com/docs/commerce/commerce-api/guide/cdn-zones-cipher-suite-types.html).

#### Parameters

*   `zoneId` (path, string, required) The unique identifier of a CDN zone.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `CipherSuitesRequest`.

_Example: CipherSettingsPatchRequestBodyExample_

```
{
  "ciphers": [
    "ECDHE-ECDSA-AES128-GCM-SHA256"
  ],
  "cipherSuiteType": "Custom"
}
```

#### Responses

*   **200** Updates current zone level cipher settings.
    
    Media type: `application/json`. Schema: `CipherSuitesEnvelope`.
    
    _Example: CipherSettingsPatchResponse_
    
    ```
    {
      "data": {
        "ciphers": [
          "ECDHE-ECDSA-AES128-GCM-SHA256"
        ],
        "cipherSuiteType": "Custom"
      }
    }
    ```
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The resource requested by the caller was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET List Turnstile widgets for the requesting instance.

`GET /organizations/{organizationId}/turnstile/widgets`

Operation ID: `listTurnstileWidgets`. Tags: Turnstile. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Retrieves Turnstile widgets for the requesting instance. The API identifies widgets using the `{name}-{environment}` naming convention (for example, `checkout-dev`, `checkout-prd`) established by the create-widget story. Only widgets whose names end with `-{environment}` for the requesting instance and returns only those matching the instance environment. The response strips the environment suffix from the `name` so callers see the logical widget name. The response includes secrets per Phase 1 alignment with Security and MRT. The system caches results for 5 minutes.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `name` (query, string) Case-insensitive substring match against the logical widget name (after stripping the environment suffix).  
    Maximum length: 255. Example: `checkout`.
*   `limit` (query, integer (int32)) Number of records to retrieve per request. Must be between 1 (minimum) and 50 (maximum). Defaults to 25.  
    Default: `25`. Minimum: 1. Maximum: 50.
*   `offset` (query, integer (int32)) Used to retrieve the results based on a particular resource offset.  
    Default: `0`. Minimum: 0.

#### Responses

*   **200** Successfully retrieved the list of Turnstile widgets.
    
    Media type: `application/json`. Schema: `TurnstileWidgetsEnvelope`.
    
    _Example: TurnstileWidgetsListResponse_
    
    ```
    {
      "data": [
        {
          "sitekey": "0x4AAAAAAAAbCd1eFgHiJkLm",
          "name": "checkout-widget",
          "mode": "managed",
          "domains": [
            "shop.example.com",
            "www.example.com"
          ],
          "bot_fight_mode": false,
          "region": "world",
          "offlabel": false,
          "clearance_level": "interactive",
          "created_on": "2026-01-15T12:00:00Z",
          "modified_on": "2026-02-20T08:30:00Z",
          "secret": "0x4AAAAAAAAbCd1eFgHiJkLm_secretvalue"
        },
        {
          "sitekey": "0x4BBBBBBBBcDe2fGhIjKlMn",
          "name": "login-widget",
          "mode": "invisible",
          "domains": [
            "login.example.com"
          ],
          "bot_fight_mode": false,
          "region": "world",
          "offlabel": false,
          "clearance_level": "interactive",
          "created_on": "2026-01-20T10:00:00Z",
          "modified_on": "2026-02-15T14:30:00Z",
          "secret": "0x4BBBBBBBBcDe2fGhIjKlMn_secretvalue"
        }
      ]
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### POST Create a Turnstile widget for the requesting instance.

`POST /organizations/{organizationId}/turnstile/widgets`

Operation ID: `createTurnstileWidget`. Tags: Turnstile. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Creates a new Cloudflare Turnstile widget for the requesting instance. The widget name in the request is the logical name; the environment suffix (`-{environment}`) automatically before creating the widget in Cloudflare, producing the `{name}-{environment}` naming convention (for example `checkout-dev`). The response includes the shared secret from Cloudflare.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    

#### Request body (required)

Media type: `application/json`. Schema: `TurnstileWidgetCreateRequest`.

_Example: TurnstileWidgetCreateRequestExample_

```
{
  "name": "checkout",
  "domains": [
    "shop.example.com",
    "www.example.com"
  ],
  "mode": "managed"
}
```

#### Responses

*   **201** Successfully created the Turnstile widget.
    
    Media type: `application/json`. Schema: `TurnstileWidgetEnvelope`.
    
    _Example: TurnstileWidgetCreateResponse_
    
    ```
    {
      "data": {
        "sitekey": "0x4AAAAAAAAbCd1eFgHiJkLm",
        "name": "checkout-widget",
        "mode": "managed",
        "domains": [
          "shop.example.com",
          "www.example.com"
        ],
        "bot_fight_mode": false,
        "region": "world",
        "offlabel": false,
        "clearance_level": "interactive",
        "created_on": "2026-01-15T12:00:00Z",
        "modified_on": "2026-01-15T12:00:00Z",
        "secret": "0x4AAAAAAAAbCd1eFgHiJkLm_secretvalue"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid (for example, hostname limit exceeded, invalid naming, or the instance has reached the 5000 widget limit).
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### GET Get Turnstile widget details.

`GET /organizations/{organizationId}/turnstile/widgets/{sitekey}`

Operation ID: `getTurnstileWidget`. Tags: Turnstile. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Retrieve the full configuration of a Cloudflare Turnstile widget by sitekey, including the shared secret.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `sitekey` (path, string, required) Cloudflare Turnstile widget sitekey.  
    Minimum length: 1. Maximum length: 64. Pattern: ^\[A-Za-z0-9\_-\]+$. Example: `0x4AAAAAAAAbCd1eFgHiJkLm`.

#### Responses

*   **200** Successfully retrieved the Turnstile widget.
    
    Media type: `application/json`. Schema: `TurnstileWidgetEnvelope`.
    
    _Example: TurnstileWidgetResponse_
    
    ```
    {
      "data": {
        "sitekey": "0x4AAAAAAAAbCd1eFgHiJkLm",
        "name": "checkout-widget",
        "mode": "managed",
        "domains": [
          "shop.example.com",
          "www.example.com"
        ],
        "bot_fight_mode": false,
        "region": "world",
        "offlabel": false,
        "clearance_level": "interactive",
        "created_on": "2026-01-15T12:00:00Z",
        "modified_on": "2026-02-20T08:30:00Z",
        "secret": "0x4AAAAAAAAbCd1eFgHiJkLm_secretvalue"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The Turnstile widget with the given sitekey was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### PUT Update an existing Turnstile widget.

`PUT /organizations/{organizationId}/turnstile/widgets/{sitekey}`

Operation ID: `updateTurnstileWidget`. Tags: Turnstile. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Update the domains and/or mode for an existing Cloudflare Turnstile widget. Returns 404 if the widget does not exist and 400 if the request is invalid (for example, when the Cloudflare hostname/domain limit for the widget has been reached).

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `sitekey` (path, string, required) Cloudflare Turnstile widget sitekey.  
    Minimum length: 1. Maximum length: 64. Pattern: ^\[A-Za-z0-9\_-\]+$. Example: `0x4AAAAAAAAbCd1eFgHiJkLm`.

#### Request body (required)

Media type: `application/json`. Schema: `TurnstileWidgetUpdateRequest`.

_Example: TurnstileWidgetUpdateRequestExample_

```
{
  "domains": [
    "shop.example.com",
    "www.example.com",
    "checkout.example.com"
  ],
  "mode": "invisible"
}
```

#### Responses

*   **200** Successfully updated the Turnstile widget.
    
    Media type: `application/json`. Schema: `TurnstileWidgetEnvelope`.
    
    _Example: TurnstileWidgetUpdateResponse_
    
    ```
    {
      "data": {
        "sitekey": "0x4AAAAAAAAbCd1eFgHiJkLm",
        "name": "checkout-widget",
        "mode": "invisible",
        "domains": [
          "shop.example.com",
          "www.example.com",
          "checkout.example.com"
        ],
        "bot_fight_mode": false,
        "region": "world",
        "offlabel": false,
        "clearance_level": "interactive",
        "created_on": "2026-01-15T12:00:00Z",
        "modified_on": "2026-02-22T16:45:00Z",
        "secret": "0x4AAAAAAAAbCd1eFgHiJkLm_secretvalue"
      }
    }
    ```
    
*   **400** The request sent by the caller is not valid (for example, hostname limit reached).
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** The caller does not have access to the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The Turnstile widget with the given sitekey was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

### DELETE Delete a Turnstile widget.

`DELETE /organizations/{organizationId}/turnstile/widgets/{sitekey}`

Operation ID: `deleteTurnstileWidget`. Tags: Turnstile. Security: AmOAuth2 (sfcc.cdn-zones.rw).

Delete an existing Cloudflare Turnstile widget. This operation is irreversible and immediately invalidates the sitekey and secret.

**Safety Controls:**

*   Production widgets (environment=prd) require explicit `forceProduction=true` query parameter
*   Returns 403 Forbidden if attempting to delete production widget without force flag
*   Supports dry-run mode via `?dryRun=true` query parameter for validation without deletion

**Post-deletion verification** runs automatically to confirm deletion.

#### Parameters

*   `organizationId` (path, string, required) An identifier for the Salesforce Commerce Cloud organization the request is being made by. It consists of a prefix 'f\_ecom\_' followed by a 4-character [realm identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#realm-id) and a 3-character [instance type identifier](https://developer.salesforce.com/docs/commerce/commerce-api/guide/base-url.html#instance-id).  
    Minimum length: 1. Maximum length: 32. Example: `f_ecom_zzxy_prd`.
    
    _Example_
    
    ```
    f_ecom_zzxy_prd
    ```
    
*   `sitekey` (path, string, required) Cloudflare Turnstile widget sitekey.  
    Minimum length: 1. Maximum length: 64. Pattern: ^\[A-Za-z0-9\_-\]+$. Example: `0x4AAAAAAAAbCd1eFgHiJkLm`.
*   `forceProduction` (query, boolean) Required to delete production widgets (environment=prd). Provides an additional safety check to prevent accidental deletion of production widgets. Non-production widgets (dev, stg, sbx) do not require this flag.  
    Default: `false`. Example: `false`.
*   `dryRun` (query, boolean) When true, validates the delete request but does not actually delete the widget. Use this to verify production protection checks before committing to deletion.  
    Default: `false`. Example: `false`.

#### Responses

*   **204** Successfully deleted the Turnstile widget. No content returned.
*   **400** Bad request. Invalid sitekey format or malformed request.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example BadRequest: same as POST /organizations/{organizationId}/storefront-zones 400 response._
    
*   **401** The caller is not authorized to access the requested resource.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: Unauthorized_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/unauthorized",
      "title": "UnAuthorized Access",
      "detail": "The authorization token passed is no longer valid"
    }
    ```
    
*   **403** Forbidden. Production widgets require explicit forceProduction flag.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: ProductionProtection_
    
    ```
    {
      "title": "Production deletion requires force flag",
      "detail": "Cannot delete production widget without forceProduction: true",
      "type": "Forbidden"
    }
    ```
    
    _Example: Forbidden_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/forbidden-access",
      "title": "Forbidden",
      "detail": "Access to requested resource is forbidden."
    }
    ```
    
*   **404** The Turnstile widget with the given sitekey was not found.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example: NotFound_
    
    ```
    {
      "type": "https://api.commercecloud.salesforce.com/documentation/error/v1/errors/resource-not-found",
      "title": "Not Found",
      "detail": "Requested resource was not found"
    }
    ```
    
*   **500** An error occurred on the server side.
    
    Media type: `application/problem+json`. Schema: `ErrorResponse`.
    
    _Example InternalServerError: same as POST /organizations/{organizationId}/storefront-zones 500 response._
    

## Schemas

### StorefrontZoneCreateRequest

The storefront zone information to be created.

*   `domainName` (_string_, required) Domain name for the site.  
    Pattern: ^.\*$. Example: `cc-merchant.com`.
*   `lastMigrationStep` (_string_) Optional. Specifies the final migration step from which to resume (for example, 8-LegacyToProxyIpAccessRuleMigrationStep).  
    Pattern: ^.\*$. Example: `8-LegacyToProxyIpAccessRuleMigrationStep`.

### StorefrontZoneCreateEnvelope

*   `data` (_StorefrontZoneCreateResponse_, required)

_Example_

```
{
  "data": {
    "zoneId": "023e105f4ecef8ad9ca31a8372d0c353",
    "zoneName": "stg-zzzz-cc-merchant-com.cc-ecdn.net",
    "status": "active",
    "createdOn": "2014-01-01T05:20:00.12345Z"
  }
}
```

### ErrorResponse

*   `title` (_string_, required) A short, human-readable summary of the problem type. It will not change from occurrence to occurrence of the problem, except for purposes of localization  
    Maximum length: 256. Example: `You do not have enough credit`.
*   `type` (_string_, required) A URI reference \[RFC3986\] that identifies the problem type. This specification encourages that, when dereferenced, it provide human-readable documentation for the problem type (e.g., using HTML \[W3C.REC-html5-20141028\]). When this member is not present, its value is assumed to be "about:blank". It accepts relative URIs; this means that they must be resolved relative to the document's base URI, as per \[RFC3986\], Section 5.  
    Maximum length: 2048. Example: `NotEnoughMoney`.
*   `detail` (_string_, required) A human-readable explanation specific to this occurrence of the problem.  
    Example: `Your current balance is 30, but that costs 50`.
*   `instance` (_string_) A URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. It accepts relative URIs; this means that they must be resolved relative to the document's base URI, as per \[RFC3986\], Section 5.  
    Maximum length: 2048. Example: `/account/12345/msgs/abc`.

### MtlsCertificatesResponseEnvelope

*   `data` (_array of MtlsCertificateResponse_, required)

_Example_

```
{
  "data": [
    {
      "mtlsCertificateId": "465a48f6-3d98-4c15-9312-211984ee8629",
      "expiresOn": "2022-01-12T04:15:57Z",
      "issuer": "DigiCert",
      "signature": "SHA256WithRSA",
      "uploadedOn": "2020-01-12T04:15:57Z",
      "ca": true,
      "serialNumber": "432217133297895665180570788458463042229861757760",
      "mtlsCertificateName": "mtls_cert_name",
      "mtlsAssociatedCodeUploadHostname": "mtls.cert.salesforce.com"
    }
  ]
}
```

### MtlsCertificateRequest

mTLS certificate request information.

*   `certificate` (_string_, required) Public key for the CA certificate in mTLS.  
    Pattern: ^.\*$. Example: `-----BEGIN CERTIFICATE----- MIIDtTCCAp2gAwIBAgIJAMHAwfXZ5PWMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX aWRnaXRzIFB0eSBMdGQwHhcNMTYwODI0MTY0MzAxWhcNMTYxMTIyMTY0MzAxWjBF MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50 ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmGdtcGbg/1 CGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKnabIRuGvB KwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpidtnKX/a+5 0GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+pyFxIXjbEI dZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pEewooaeO2 izNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABo4GnMIGkMB0GA1UdDgQWBBT/LbE4 9rWf288N6sJA5BRb6FJIGDB1BgNVHSMEbjBsgBT/LbE49rWf288N6sJA5BRb6FJI GKFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV BAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAMHAwfXZ5/PWMAwGA1UdEwQF MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHHFwl0tH0quUYZYO0dZYt4R7SJ0pCm2 2satiyzHl4OnXcHDpekAo7/a09c6Lz6AU83cKy/+x3/djYHXWba7HpEu0dR3ugQP Mlr4zrhd9xKZ0KZKiYmtJH+ak4OM4L3FbT0owUZPyjLSlhMtJVcoRp5CJsjAMBUG SvD8RX+T01wzox/Qb+lnnNnOlaWpqu8eoOenybxKp1a9ULzIVvN/LAcc+14vioFq 2swRWtmocBAs8QR9n4uvbpiYvS8eYueDCWMM4fvFfBhaDZ3N9IbtySh3SpFdQDhw YbjM2rxXiyLGxB4Bol7QTv4zHif7Zt89FReT/NBy4rzaskDJY5L6xmY= -----END CERTIFICATE-----`.
*   `privateKey` (_string_, required) Private key of the CA certificate in mTLS.  
    Pattern: ^.\*$. Example: `-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmG dtcGbg/1CGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKn abIRuGvBKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpid tnKX/a+50GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+py FxIXjbEIdZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pE ewooaeO2izNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABAoIBACbhTYXBZYKmYPCb HBR1IBlCQA2nLGf0qRuJNJZg5iEzXows/6tc8YymZkQE7nolapWsQ+upk2y5Xdp/ axiuprIs9JzkYK8Ox0r+dlwCG1kSW+UAbX0bQ/qUqlsTvU6muVuMP8vZYHxJ3wmb +ufRBKztPTQ/rYWaYQcgC0RWI20HTFBMxlTAyNxYNWzX7RKFkGVVyB9RsAtmcc8g +j4OdosbfNoJPS0HeIfNpAznDfHKdxDk2Yc1tV6RHBrC1ynyLE9+TaflIAdo2MVv KLMLq51GqYKtgJFIlBRPQqKoyXdz3fGvXrTkf/WY9QNq0J1Vk5ERePZ54mN8iZB7 9lwy/AkCgYEA6FXzosxswaJ2wQLeoYc7ceaweX/SwTvxHgXzRyJIIT0eJWgx13Wo /WA3Iziimsjf6qE+SI/8laxPp2A86VMaIt3Z3mJN/CqSVGw8LK2AQst+OwdPyDMu iacE8lj/IFGC8mwNUAb9CzGU3JpU4PxxGFjS/eMtGeRXCWkK4NE+G08CgYEA1Kp9 N2JrVlqUz+gAX+LPmE9OEMAS9WQSQsfCHGogIFDGGcNf7+uwBM7GAaSJIP01zcoe VAgWdzXCv3FLhsaZoJ6RyLOLay5phbu1iaTr4UNYm5WtYTzMzqh8l1+MFFDl9xDB vULuCIIrglM5MeS/qnSg1uMoH2oVPj9TVst/ir8CgYEAxrI7Ws9Zc4Bt70N1As+U lySjaEVZCMkqvHJ6TCuVZFfQoE0r0whdLdRLU2PsLFP+q7qaeZQqgBaNSKeVcDYR 9B+nY/jOmQoPewPVsp/vQTCnE/R81spu0mp0YI6cIheT1Z9zAy322svcc43JaWB7 mEbeqyLOP4Z4qSOcmghZBSECgYACvR9Xs0DGn+wCsW4vze/2ei77MD4OQvepPIFX dFZtlBy5ADcgE9z0cuVB6CiL8DbdK5kwY9pGNr8HUCI03iHkW6Zs+0L0YmihfEVe PG19PSzK9CaDdhD9KFZSbLyVFmWfxOt50H7YRTTiPMgjyFpfi5j2q348yVT0tEQS fhRqaQKBgAcWPokmJ7EbYQGeMbS7HC8eWO/RyamlnSffdCdSc7ue3zdVJxpAkQ8W qu80pEIF6raIQfAf8MXiiZ7auFOSnHQTXUbhCpvDLKi0Mwq3G8Pl07l+2s6dQG6T lv6XTQaMyf6n1yjzL+fzDrH3qXMxHMO/b13EePXpDMpY7HQpoLDi -----END RSA PRIVATE KEY-----`.
*   `name` (_string_, required) Certificate name used for ease of understanding.  
    Pattern: ^.\*$. Example: `mtls_cert_name`.

_Example_

```
{
  "certificate": "-----BEGIN CERTIFICATE-----\nMIIDtTCCAp2gAwIBAgIJAMHAwfXZ5PWMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwODI0MTY0MzAxWhcNMTYxMTIyMTY0MzAxWjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmGdtcGbg/1\nCGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKnabIRuGvB\nKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpidtnKX/a+5\n0GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+pyFxIXjbEI\ndZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pEewooaeO2\nizNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABo4GnMIGkMB0GA1UdDgQWBBT/LbE4\n9rWf288N6sJA5BRb6FJIGDB1BgNVHSMEbjBsgBT/LbE49rWf288N6sJA5BRb6FJI\nGKFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV\nBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAMHAwfXZ5/PWMAwGA1UdEwQF\nMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHHFwl0tH0quUYZYO0dZYt4R7SJ0pCm2\n2satiyzHl4OnXcHDpekAo7/a09c6Lz6AU83cKy/+x3/djYHXWba7HpEu0dR3ugQP\nMlr4zrhd9xKZ0KZKiYmtJH+ak4OM4L3FbT0owUZPyjLSlhMtJVcoRp5CJsjAMBUG\nSvD8RX+T01wzox/Qb+lnnNnOlaWpqu8eoOenybxKp1a9ULzIVvN/LAcc+14vioFq\n2swRWtmocBAs8QR9n4uvbpiYvS8eYueDCWMM4fvFfBhaDZ3N9IbtySh3SpFdQDhw\nYbjM2rxXiyLGxB4Bol7QTv4zHif7Zt89FReT/NBy4rzaskDJY5L6xmY=\n-----END CERTIFICATE-----",
  "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmG\ndtcGbg/1CGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKn\nabIRuGvBKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpid\ntnKX/a+50GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+py\nFxIXjbEIdZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pE\newooaeO2izNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABAoIBACbhTYXBZYKmYPCb\nHBR1IBlCQA2nLGf0qRuJNJZg5iEzXows/6tc8YymZkQE7nolapWsQ+upk2y5Xdp/\naxiuprIs9JzkYK8Ox0r+dlwCG1kSW+UAbX0bQ/qUqlsTvU6muVuMP8vZYHxJ3wmb\n+ufRBKztPTQ/rYWaYQcgC0RWI20HTFBMxlTAyNxYNWzX7RKFkGVVyB9RsAtmcc8g\n+j4OdosbfNoJPS0HeIfNpAznDfHKdxDk2Yc1tV6RHBrC1ynyLE9+TaflIAdo2MVv\nKLMLq51GqYKtgJFIlBRPQqKoyXdz3fGvXrTkf/WY9QNq0J1Vk5ERePZ54mN8iZB7\n9lwy/AkCgYEA6FXzosxswaJ2wQLeoYc7ceaweX/SwTvxHgXzRyJIIT0eJWgx13Wo\n/WA3Iziimsjf6qE+SI/8laxPp2A86VMaIt3Z3mJN/CqSVGw8LK2AQst+OwdPyDMu\niacE8lj/IFGC8mwNUAb9CzGU3JpU4PxxGFjS/eMtGeRXCWkK4NE+G08CgYEA1Kp9\nN2JrVlqUz+gAX+LPmE9OEMAS9WQSQsfCHGogIFDGGcNf7+uwBM7GAaSJIP01zcoe\nVAgWdzXCv3FLhsaZoJ6RyLOLay5phbu1iaTr4UNYm5WtYTzMzqh8l1+MFFDl9xDB\nvULuCIIrglM5MeS/qnSg1uMoH2oVPj9TVst/ir8CgYEAxrI7Ws9Zc4Bt70N1As+U\nlySjaEVZCMkqvHJ6TCuVZFfQoE0r0whdLdRLU2PsLFP+q7qaeZQqgBaNSKeVcDYR\n9B+nY/jOmQoPewPVsp/vQTCnE/R81spu0mp0YI6cIheT1Z9zAy322svcc43JaWB7\nmEbeqyLOP4Z4qSOcmghZBSECgYACvR9Xs0DGn+wCsW4vze/2ei77MD4OQvepPIFX\ndFZtlBy5ADcgE9z0cuVB6CiL8DbdK5kwY9pGNr8HUCI03iHkW6Zs+0L0YmihfEVe\nPG19PSzK9CaDdhD9KFZSbLyVFmWfxOt50H7YRTTiPMgjyFpfi5j2q348yVT0tEQS\nfhRqaQKBgAcWPokmJ7EbYQGeMbS7HC8eWO/RyamlnSffdCdSc7ue3zdVJxpAkQ8W\nqu80pEIF6raIQfAf8MXiiZ7auFOSnHQTXUbhCpvDLKi0Mwq3G8Pl07l+2s6dQG6T\nlv6XTQaMyf6n1yjzL+fzDrH3qXMxHMO/b13EePXpDMpY7HQpoLDi\n-----END RSA PRIVATE KEY-----",
  "name": "mtls_cert_name"
}
```

### MtlsCertificateResponseEnvelope

*   `data` (_MtlsCertificateResponse_, required)

_Example_

```
{
  "data": {
    "mtlsCertificateId": "465a48f6-3d98-4c15-9312-211984ee8629",
    "expiresOn": "2022-01-12T04:15:57Z",
    "issuer": "DigiCert",
    "signature": "SHA256WithRSA",
    "uploadedOn": "2020-01-12T04:15:57Z",
    "ca": true,
    "serialNumber": "432217133297895665180570788458463042229861757760",
    "mtlsCertificateName": "mtls_cert_name",
    "mtlsAssociatedCodeUploadHostname": "mtls.cert.salesforce.com"
  }
}
```

### PageShieldNotificationWebhookListEnvelope

*   `data` (_array of PageShieldNotificationWebhookResponse_, required)

_Example_

```
{
  "data": [
    {
      "id": "webhook_1234567890abcdef",
      "name": "Security Alert Webhook",
      "webhookUrl": "https://example.com/webhook/security",
      "type": "security_alert",
      "createdAt": "2023-01-01T00:00:00Z",
      "lastSuccess": "2023-01-01T12:00:00Z",
      "lastFailure": "2023-01-01T18:00:00Z",
      "enabled": true,
      "zones": [
        "zone_1234567890abcdef"
      ]
    }
  ]
}
```

### PageShieldNotificationWebhookRequest

Page shield notification for the webhook request.

*   `webhookId` (_string_) Webhook ID  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `webhookUrl` (_string_, required) Webhook URL.  
    Pattern: ^.\*$. Example: `https://example.com/webhook/security`.
*   `name` (_string_, required) Webhook name  
    Pattern: ^.\*$. Example: `Security Alert Webhook`.
*   `secret` (_string_) Webhook optional secret.  
    Pattern: ^.\*$. Example: `webhook_secret_123`.
*   `enabled` (_boolean_) Specifies whether or not the notification is enabled.  
    Example: `true`.
*   `zones` (_array of string_) Zone names on which to filter notifications alerts. An empty array indicates all storefront zones.  
    Items: Pattern: ^.\*$. Example: `zone_1234567890abcdef`.

_Example_

```
{
  "webhookUrl": "https://example.com/webhook/security",
  "name": "Security Alert Webhook",
  "secret": "webhook_secret_123",
  "enabled": true,
  "zones": [
    "zone_1234567890abcdef"
  ]
}
```

### PageShieldNotificationWebhookEnvelope

*   `data` (_PageShieldNotificationWebhookResponse_, required)

_Example_

```
{
  "data": {
    "id": "webhook_1234567890abcdef",
    "name": "Security Alert Webhook",
    "webhookUrl": "https://example.com/webhook/security",
    "type": "security_alert",
    "createdAt": "2023-01-01T00:00:00Z",
    "lastSuccess": "2023-01-01T12:00:00Z",
    "lastFailure": "2023-01-01T18:00:00Z",
    "enabled": true,
    "zones": [
      "zone_1234567890abcdef"
    ]
  }
}
```

### PageShieldNotificationWebhookUpdateRequest

Request body to update a page shield notification. You must include at least one of the following properties: webhookId, enabled, or zones.

*   `webhookId` (_string_) Webhook ID  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `enabled` (_boolean_) Specifies whether or not the notification is enabled.  
    Example: `true`.
*   `zones` (_array of string_) Zone names on which to filter notifications alerts. An empty array indicates all storefront zones.  
    Items: Pattern: ^.\*$. Example: `zone_1234567890abcdef`.

_Example_

```
{
  "webhookId": "ffffe61cf25e4ec49c34b029ff3060f7",
  "enabled": true,
  "zones": [
    "zone_1234567890abcdef"
  ]
}
```

### WebhookListEnvelope

*   `data` (_array of WebhookResponse_, required)

### WebhookRequest

Webhook request

*   `name` (_string_, required) Webhook name  
    Pattern: ^.\*$. Example: `My Webhook`.
*   `url` (_string_, required) Webhook URL  
    Pattern: ^.\*$. Example: `https://example.com/webhook`.
*   `secret` (_string_) Webhook optional secret  
    Pattern: ^.\*$. Example: `webhook_secret_123`.

### WebhookEnvelope

*   `data` (_WebhookResponse_, required)

### PageShieldPoliciesListEnvelope

*   `data` (_array of PageShieldPolicyResponse_, required)

_Example_

```
{
  "data": [
    {
      "action": "allow",
      "description": "Allow scripts from trusted CDN sources",
      "enabled": true,
      "expression": "http.request.uri.path contains \"/trusted-cdn/\"",
      "value": "script-src",
      "id": "policy_1234567890abcdef"
    }
  ]
}
```

### PageShieldPolicyRequest

Page shield policy request object.

*   `action` (_string_) Action taken when expression matches allow or log.  
    Allowed values: `allow`, `log`. Example: `allow`.
*   `description` (_string_) Description for the policy.  
    Pattern: ^.\*$. Example: `Allow scripts from trusted CDN sources`.
*   `enabled` (_boolean_) Enable/disable the policy.  
    Example: `true`.
*   `expression` (_string_) Expression of the policy.  
    Pattern: ^.\*$. Example: `http.request.uri.path contains "/trusted-cdn/"`.
*   `value` (_string_) Policy to be applied.  
    Pattern: ^.\*$. Example: `script-src`.

_Example_

```
{
  "action": "allow",
  "description": "Allow scripts from trusted CDN sources",
  "enabled": true,
  "expression": "http.request.uri.path contains \"/trusted-cdn/\"",
  "value": "script-src"
}
```

### PageShieldPoliciesEnvelope

*   `data` (_PageShieldPolicyResponse_, required)

_Example_

```
{
  "data": {
    "action": "allow",
    "description": "Allow scripts from trusted CDN sources",
    "enabled": true,
    "expression": "http.request.uri.path contains \"/trusted-cdn/\"",
    "value": "script-src",
    "id": "policy_1234567890abcdef"
  }
}
```

### PageShieldScriptListEnvelope

*   `data` (_array of PageShieldScriptResponse_, required)

_Example_

```
{
  "data": [
    {
      "id": "12345678901234asdfasfasdf",
      "url": "https://sfdc-test.net/on/demandware.static/Sites-SiteNemesis-Site/-/en_US//lib/jquery/ui/jquery-ui.min.js",
      "host": "sfdc-test.net",
      "addedAt": "2022-01-01T05:20:00Z",
      "firstSeenAt": "2022-01-01T05:20:00Z",
      "lastSeenAt": "2022-01-01T05:20:00Z",
      "fetchedAt": "2022-01-01T05:20:00Z",
      "domainReportedMalicious": false,
      "hash": "1243453456abc",
      "cryptoMiningScore": 1,
      "dataflowScore": 1,
      "jsIntegrityScore": 1,
      "mageCartScore": 2,
      "malwareScore": 1,
      "obfuscationScore": 2,
      "maliciousDomainCategories": [
        "Malware"
      ],
      "maliciousUrlCategories": [
        "Malware"
      ],
      "urlContainsCdnCgiPath": false,
      "urlReportedMalicious": false,
      "pageUrls": [
        "blog.test.salesforce.com/page1",
        "blog.test.salesforce.com/page2"
      ],
      "firstPageUrl": "blog.test.salesforce.com",
      "status": "active",
      "versions": []
    }
  ]
}
```

### PageShieldScriptEnvelope

*   `data` (_PageShieldScriptResponse_, required)

_Example_

```
{
  "data": {
    "id": "12345678901234asdfasfasdf",
    "url": "https://sfdc-test.net/on/demandware.static/Sites-SiteNemesis-Site/-/en_US//lib/jquery/ui/jquery-ui.min.js",
    "host": "sfdc-test.net",
    "addedAt": "2022-01-01T05:20:00Z",
    "firstSeenAt": "2022-01-01T05:20:00Z",
    "lastSeenAt": "2022-01-01T05:20:00Z",
    "fetchedAt": "2022-01-01T05:20:00Z",
    "domainReportedMalicious": false,
    "hash": "1243453456abc",
    "cryptoMiningScore": 1,
    "dataflowScore": 1,
    "jsIntegrityScore": 1,
    "mageCartScore": 2,
    "malwareScore": 1,
    "obfuscationScore": 2,
    "maliciousDomainCategories": [
      "Malware"
    ],
    "maliciousUrlCategories": [
      "Malware"
    ],
    "urlContainsCdnCgiPath": false,
    "urlReportedMalicious": false,
    "pageUrls": [
      "blog.test.salesforce.com/page1",
      "blog.test.salesforce.com/page2"
    ],
    "firstPageUrl": "blog.test.salesforce.com",
    "status": "active",
    "versions": []
  }
}
```

### ZonesEnvelope

*   `data` (_array of Zone_, required)

_Example_

```
{
  "data": [
    {
      "zoneId": "example1-zone-Id",
      "name": "example1.com",
      "status": "pending"
    },
    {
      "zoneId": "example2-zone-Id",
      "name": "example2.com",
      "status": "active"
    }
  ]
}
```

### WafGroupsEnvelope

*   `data` (_array of WafGroup_, required)

### WafGroup

*   `groupId` (_string_)  
    Maximum length: 100. Example: `372e67954025e0ba6aaa6d586b9e0b60`.
*   `action` (_string_) The action to apply to WAF group  
    Allowed values: `block`, `challenge`, `monitor`, `default`. Example: `block`.
*   `mode` (_string_, required) Mode of the waf rule - on vs off  
    Allowed values: `on`, `off`. Example: `on`.
*   `description` (_string_) Description of the WAF Group.  
    Pattern: ^.\*$. Example: `Test WAF Group to protect against SQL injection`.

_Example_

```
{
  "groupId": "372abe67954025e0ba6aaa6d586b9e0b",
  "zoneId": "example1-zone-Id",
  "action": "monitor",
  "mode": true,
  "description": "SQL injection protection"
}
```

### WafGroupEnvelope

*   `data` (_WafGroup_)

### WafRulesEnvelope

*   `data` (_array of WafRule_, required)

_Example_

```
{
  "data": [
    {
      "ruleId": "892e67954025e0ba6atefd586b9e58b3",
      "groupId": "372abe67954025e0ba6aaa6d586b9e0b",
      "action": "monitor",
      "defaultAction": "challenge",
      "description": "SQL injection protection"
    }
  ]
}
```

### WafRuleEnvelope

*   `data` (_WafRule_, required)

_Example_

```
{
  "data": {
    "ruleId": "892e67954025e0ba6atefd586b9e58b3",
    "groupId": "372abe67954025e0ba6aaa6d586b9e0b",
    "action": "monitor",
    "defaultAction": "challenge",
    "description": "SQL injection protection"
  }
}
```

### WafRule

*   `ruleId` (_string_)  
    Pattern: ^.\*$. Example: `892e67954025e0ba6atefd586b9e58b3`.
*   `groupId` (_string_)  
    Maximum length: 100. Example: `372e67954025e0ba6aaa6d586b9e0b60`.
*   `action` (_string_, required) The action to apply to WAF rule  
    Allowed values: `block`, `challenge`, `monitor`, `disable`, `default`. Example: `block`.
*   `defaultAction` (_string_) The action to apply to WAF rule  
    Allowed values: `block`, `challenge`, `monitor`, `disable`. Example: `block`.
*   `description` (_string_) Description of the WAF Group.  
    Pattern: ^.\*$. Example: `Test WAF Rule to protect against SQL injection`.

_Example_

```
{
  "ruleId": "892e67954025e0ba6atefd586b9e58b3",
  "groupId": "372abe67954025e0ba6aaa6d586b9e0b",
  "action": "monitor",
  "defaultAction": "challenge",
  "description": "SQL injection protection"
}
```

### SpeedSettingsEnvelope

*   `data` (_SpeedSetting_, required)

### SpeedSetting

*   `brotliCompression` (_string_) Brotli compression setting of a zone.  
    Allowed values: `on`, `off`. Default: `off`. Example: `off`.
*   `http2Prioritization` (_string_) Http2 prioritization setting for a zone.  
    Allowed values: `on`, `off`. Default: `off`. Example: `off`.
*   `webp` (_string_) Support for the WebP image format when using image modification for a zone. The WebP image format can be used with supported clients for added performance benefits. Setting this property to `on` will return an error when the `polish` property is set to `off`.  
    Allowed values: `on`, `off`. Default: `off`. Example: `off`.
*   `polish` (_string_) The level of polish (image quality) used for image modification. The value `lossless` corresponds to **Polish Level Basic** in the UI, and the value `lossy` corresponds to **Polish Level Basic+JPEG.** To disable image modification, set this property to `off`. Setting this property to `off` will prevent you from setting the `webp` property to `on`.  
    Allowed values: `off`, `lossless`, `lossy`. Default: `off`. Example: `off`.
*   `earlyHints` (_string_) Early Hints for a zone.  
    Allowed values: `on`, `off`. Default: `off`. Example: `off`.
*   `http3` (_string_) Http3 for a zone.  
    Allowed values: `on`, `off`. Default: `off`. Example: `off`.
*   `http2ToOrigin` (_string_) Http2 to Origin for a zone.  
    Allowed values: `on`, `off`. Default: `off`. Example: `off`.

_Example_

```
{
  "brotliCompression": "off"
}
```

### SecuritySettingsEnvelope

*   `data` (_SecuritySetting_, required)

_Example_

```
{
  "data": {
    "hsts": {
      "enabled": true,
      "includeSubdomains": true,
      "maxAge": 31536000,
      "preload": false
    },
    "securityLevel": "medium",
    "tls13Enabled": true,
    "wafEnabled": true,
    "alwaysUseHttps": true
  }
}
```

### SecuritySetting

*   `hsts` (_object_) The security header for a zone.
    
    *   `enabled` (_boolean_) Enable strict transport security.  
        Example: `true`.
    *   `includeSubdomains` (_boolean_) Include all subdomains for strict transport security.  
        Example: `true`.
    *   `maxAge` (_number_) Max age in seconds of the strict transport security.  
        Example: `31536000`.
    *   `preload` (_boolean_) Preload any URLs that are included in the response headers.  
        Example: `false`.
    
    _Example_
    
    ```
    {
      "enabled": true,
      "includeSubdomains": true,
      "maxAge": 31536000,
      "preload": false
    }
    ```
    
*   `securityLevel` (_string_) Security profile for your zone, which will automatically adjust each of the security settings.  
    Allowed values: `off`, `essentially_off`, `low`, `medium`, `high`, `under_attack`. Example: `medium`.
*   `tls13Enabled` (_boolean_) Enable Crypto TLS 1.3 feature for this zone.  
    Example: `true`.
*   `wafEnabled` (_boolean_) Enable WAF (OWASP) protection for this zone. Not applicable for zones using WAFv2.  
    Example: `true`.
*   `alwaysUseHttps` (_boolean_, required) Redirect all http requests to https.  
    Example: `true`.

_Example_

```
{
  "hsts": {
    "enabled": true,
    "includeSubdomains": true,
    "maxAge": 31536000,
    "preload": false
  },
  "securityLevel": "medium",
  "tls13Enabled": true,
  "wafEnabled": true,
  "alwaysUseHttps": true
}
```

### CachePurgeRequest

Request for doing a cache purge

*   `path` (_string_) Cache clearing path. Accepts any valid path. Provide 'path' or 'tags', not both.  
    Pattern: ^.\*$. Example: `www.sfcc-ecdn-test5.net/dw/shop/v21_9/products`.
*   `tags` (_array of string_) List of cache tags to purge. When specified, all cached content associated with these tags will be purged.  
    Items: Pattern: ^.\*$. Example: `product-123`.
    
    _Example_
    
    ```
    [
      "product-123",
      "category-456"
    ]
    ```
    

_Example_

```
{
  "path": "www.sfcc-ecdn-test5.net/dw/shop/v21_9/products",
  "tags": [
    "product-123",
    "category-456"
  ]
}
```

### CachePurgeResponseEnvelope

*   `data` (_CachePurgeResponse_, required)

_Example_

```
{
  "data": {
    "cachePurged": false,
    "details": "1084 : Unable to purge '<url>'."
  }
}
```

### OCAPICachingToggleRequest

Request to enable or disable API Caching Page rule

*   `enableOCAPICachingPageRule` (_boolean_, required) True to enable API Caching Page rule, false to disable.  
    Example: `true`.

### CacheRulesEnvelope

*   `data` (_array of CacheRule_, required)

_Example_

```
{
  "data": [
    {
      "ruleId": "2c0fc9fa937b11eaa1b71c4d701ab86e",
      "description": "Cache static assets on product pages",
      "expression": "(http.request.uri.path matches \"^/product/.*\")",
      "action": "cache",
      "excludeQueryStrings": [
        "gclid",
        "utm_campaign"
      ],
      "ignoreQueryStringsOrder": true,
      "respectStrongEtags": false,
      "lastUpdated": "2022-01-01T05:20:00Z",
      "enabled": true
    }
  ]
}
```

### CacheRulesPostRequest

Request body for creating a cache rule.

*   `description` (_string_, required) A description of what the cache rule does.  
    Pattern: ^.\*$. Example: `Cache static assets on product pages.`.
*   `expression` (_string_, required) The expression that defines when this cache rule applies.  
    Pattern: ^.\*$. Example: `(http.request.uri.path matches "^/product/.*")`.
*   `action` (_string_, required) The action to take (currently only supports "cache").  
    Pattern: ^.\*$. Example: `cache`.
*   `excludeQueryStrings` (_array of string_) List of query string parameters to exclude from the cache key.  
    Items: Pattern: ^.\*$. Example: `gclid`.
    
    _Example_
    
    ```
    [
      "gclid",
      "utm_campaign"
    ]
    ```
    
*   `ignoreQueryStringsOrder` (_boolean_) Specifies whether the order of query string parameters in the cache key is ignored.  
    Example: `true`.
*   `respectStrongEtags` (_boolean_) Specifies whether strong ETags are respected.  
    Example: `false`.
*   `enabled` (_boolean_) Specifies whether the rule is enabled.  
    Example: `true`.
*   `position` (_RulePosition_)

### CacheRulesPatchRequest

Request body for updating a cache rule. All fields are optional, but at least one field must be provided.

*   `description` (_string_) A description of what the cache rule does.  
    Pattern: ^.\*$. Example: `Cache static assets on product pages.`.
*   `expression` (_string_) The expression that defines when this cache rule applies.  
    Pattern: ^.\*$. Example: `(http.request.uri.path matches "^/product/.*")`.
*   `action` (_string_) The action to take (currently only supports "cache").  
    Pattern: ^.\*$. Example: `cache`.
*   `excludeQueryStrings` (_array of string_) List of query string parameters to exclude from the cache key.  
    Items: Pattern: ^.\*$. Example: `gclid`.
    
    _Example_
    
    ```
    [
      "gclid",
      "utm_campaign"
    ]
    ```
    
*   `ignoreQueryStringsOrder` (_boolean_) Specifies whether the order of query string parameters in the cache key is ignored.  
    Example: `true`.
*   `respectStrongEtags` (_boolean_) Specifies whether strong ETags are respected.  
    Example: `false`.
*   `enabled` (_boolean_) Specifies whether the rule is enabled.  
    Example: `true`.
*   `position` (_RulePosition_)

### CertificatesEnvelope

*   `data` (_array of Certificate_, required)

_Example_

```
{
  "data": [
    {
      "certificateId": "f90712123fb02287348dd34c0a282bb9",
      "hosts": [
        "example.com",
        "www.example.com"
      ],
      "expiresOn": "2025-12-31T23:59:59Z",
      "uploadedOn": "2024-01-01T00:00:00Z",
      "issuer": "Let's Encrypt Authority X3",
      "signature": "SHA256",
      "status": "ACTIVE",
      "minTlsVersion": "1.2",
      "certificateType": "custom",
      "certificateAuthority": "lets_encrypt",
      "certificateValidation": "http",
      "certificateVerificationTXTName": "_acme-challenge.example.com",
      "certificateVerificationTXTValue": "abc123def456ghi789",
      "certificateVerificationStatus": "ACTIVE",
      "wildcardHostname": false,
      "wildcardCertificateVerificationTXTName": "_acme-challenge.wildcard.example.com",
      "wildcardCertificateVerificationTXTValue": "wildcard_abc123def456",
      "wildcardCertificateVerificationStatus": "ACTIVE",
      "customHostnameVerificationTXTName": "_acme-challenge.custom.example.com",
      "customHostnameVerificationTXTValue": "custom_abc123def456",
      "customHostnameId": "f90712123fb02287348dd34c0a282bb9",
      "customHostname": "custom.example.com",
      "customHostnameStatus": "ACTIVE",
      "dcvDelegationRecords": []
    }
  ]
}
```

### CertificateRequest

Certificate request information

*   `hostname` (_string_, required) Hostname that certificate needs to be applied to.  
    Pattern: ^.\*$. Example: `example.com`.
*   `bundleMethod` (_string_) Bundle method of the custom certificate chain for verification.  
    Pattern: ^.\*$. Example: `ubiquitous`.
*   `certificateType` (_string_) Indicates certificate is custom or automatic certificate renewal by eCDN. Optional field, if nothing specified the default value is custom. Valid values are custom or automatic.  
    Pattern: ^.\*$. Example: `custom`.
*   `certificate` (_string_) Public key of the custom certificate. Required if the certificateType value is custom.  
    Pattern: ^.\*$. Example: `-----BEGIN CERTIFICATE----- MIIDtTCCAp2gAwIBAgIJAMHAwfXZ5PWMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV BAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX aWRnaXRzIFB0eSBMdGQwHhcNMTYwODI0MTY0MzAxWhcNMTYxMTIyMTY0MzAxWjBF MQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50 ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmGdtcGbg/1 CGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKnabIRuGvB KwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpidtnKX/a+5 0GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+pyFxIXjbEI dZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pEewooaeO2 izNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABo4GnMIGkMB0GA1UdDgQWBBT/LbE4 9rWf288N6sJA5BRb6FJIGDB1BgNVHSMEbjBsgBT/LbE49rWf288N6sJA5BRb6FJI GKFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV BAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAMHAwfXZ5/PWMAwGA1UdEwQF MAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHHFwl0tH0quUYZYO0dZYt4R7SJ0pCm2 2satiyzHl4OnXcHDpekAo7/a09c6Lz6AU83cKy/+x3/djYHXWba7HpEu0dR3ugQP Mlr4zrhd9xKZ0KZKiYmtJH+ak4OM4L3FbT0owUZPyjLSlhMtJVcoRp5CJsjAMBUG SvD8RX+T01wzox/Qb+lnnNnOlaWpqu8eoOenybxKp1a9ULzIVvN/LAcc+14vioFq 2swRWtmocBAs8QR9n4uvbpiYvS8eYueDCWMM4fvFfBhaDZ3N9IbtySh3SpFdQDhw YbjM2rxXiyLGxB4Bol7QTv4zHif7Zt89FReT/NBy4rzaskDJY5L6xmY= -----END CERTIFICATE-----`.
*   `privateKey` (_string_) Private key associated with the custom certificate. Required if the `certificateType` value is custom.  
    Pattern: ^.\*$. Example: `-----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmG dtcGbg/1CGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKn abIRuGvBKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpid tnKX/a+50GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+py FxIXjbEIdZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pE ewooaeO2izNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABAoIBACbhTYXBZYKmYPCb HBR1IBlCQA2nLGf0qRuJNJZg5iEzXows/6tc8YymZkQE7nolapWsQ+upk2y5Xdp/ axiuprIs9JzkYK8Ox0r+dlwCG1kSW+UAbX0bQ/qUqlsTvU6muVuMP8vZYHxJ3wmb +ufRBKztPTQ/rYWaYQcgC0RWI20HTFBMxlTAyNxYNWzX7RKFkGVVyB9RsAtmcc8g +j4OdosbfNoJPS0HeIfNpAznDfHKdxDk2Yc1tV6RHBrC1ynyLE9+TaflIAdo2MVv KLMLq51GqYKtgJFIlBRPQqKoyXdz3fGvXrTkf/WY9QNq0J1Vk5ERePZ54mN8iZB7 9lwy/AkCgYEA6FXzosxswaJ2wQLeoYc7ceaweX/SwTvxHgXzRyJIIT0eJWgx13Wo /WA3Iziimsjf6qE+SI/8laxPp2A86VMaIt3Z3mJN/CqSVGw8LK2AQst+OwdPyDMu iacE8lj/IFGC8mwNUAb9CzGU3JpU4PxxGFjS/eMtGeRXCWkK4NE+G08CgYEA1Kp9 N2JrVlqUz+gAX+LPmE9OEMAS9WQSQsfCHGogIFDGGcNf7+uwBM7GAaSJIP01zcoe VAgWdzXCv3FLhsaZoJ6RyLOLay5phbu1iaTr4UNYm5WtYTzMzqh8l1+MFFDl9xDB vULuCIIrglM5MeS/qnSg1uMoH2oVPj9TVst/ir8CgYEAxrI7Ws9Zc4Bt70N1As+U lySjaEVZCMkqvHJ6TCuVZFfQoE0r0whdLdRLU2PsLFP+q7qaeZQqgBaNSKeVcDYR 9B+nY/jOmQoPewPVsp/vQTCnE/R81spu0mp0YI6cIheT1Z9zAy322svcc43JaWB7 mEbeqyLOP4Z4qSOcmghZBSECgYACvR9Xs0DGn+wCsW4vze/2ei77MD4OQvepPIFX dFZtlBy5ADcgE9z0cuVB6CiL8DbdK5kwY9pGNr8HUCI03iHkW6Zs+0L0YmihfEVe PG19PSzK9CaDdhD9KFZSbLyVFmWfxOt50H7YRTTiPMgjyFpfi5j2q348yVT0tEQS fhRqaQKBgAcWPokmJ7EbYQGeMbS7HC8eWO/RyamlnSffdCdSc7ue3zdVJxpAkQ8W qu80pEIF6raIQfAf8MXiiZ7auFOSnHQTXUbhCpvDLKi0Mwq3G8Pl07l+2s6dQG6T lv6XTQaMyf6n1yjzL+fzDrH3qXMxHMO/b13EePXpDMpY7HQpoLDi -----END RSA PRIVATE KEY-----`.
*   `certificateAuthority` (_string_) Certificate authority only for automatic certificate renewal by eCDN. Required if the `certificateType` value is automatic. Valid values are `google` or `lets_encrypt`.  
    Pattern: ^.\*$. Example: `lets_encrypt`.
*   `certificateValidation` (_string_) Certificate validation type is optional only for `certificateType` automatic, default value is `http`. Valid values are `http` or `txt`.  
    Pattern: ^.\*$. Example: `http`.
*   `wildcardHostname` (_boolean_) Set to true for a wildcard custom hostname.  
    Example: `false`.

_Example_

```
{
  "hostname": "example.com",
  "bundleMethod": "ubiquitous",
  "certificateType": "custom",
  "certificate": "-----BEGIN CERTIFICATE-----\nMIIDtTCCAp2gAwIBAgIJAMHAwfXZ5PWMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV\nBAYTAkFVMRMwEQYDVQQIEwpTb21lLVN0YXRlMSEwHwYDVQQKExhJbnRlcm5ldCBX\naWRnaXRzIFB0eSBMdGQwHhcNMTYwODI0MTY0MzAxWhcNMTYxMTIyMTY0MzAxWjBF\nMQswCQYDVQQGEwJBVTETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50\nZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\nCgKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmGdtcGbg/1\nCGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKnabIRuGvB\nKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpidtnKX/a+5\n0GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+pyFxIXjbEI\ndZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pEewooaeO2\nizNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABo4GnMIGkMB0GA1UdDgQWBBT/LbE4\n9rWf288N6sJA5BRb6FJIGDB1BgNVHSMEbjBsgBT/LbE49rWf288N6sJA5BRb6FJI\nGKFJpEcwRTELMAkGA1UEBhMCQVUxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNV\nBAoTGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZIIJAMHAwfXZ5/PWMAwGA1UdEwQF\nMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAHHFwl0tH0quUYZYO0dZYt4R7SJ0pCm2\n2satiyzHl4OnXcHDpekAo7/a09c6Lz6AU83cKy/+x3/djYHXWba7HpEu0dR3ugQP\nMlr4zrhd9xKZ0KZKiYmtJH+ak4OM4L3FbT0owUZPyjLSlhMtJVcoRp5CJsjAMBUG\nSvD8RX+T01wzox/Qb+lnnNnOlaWpqu8eoOenybxKp1a9ULzIVvN/LAcc+14vioFq\n2swRWtmocBAs8QR9n4uvbpiYvS8eYueDCWMM4fvFfBhaDZ3N9IbtySh3SpFdQDhw\nYbjM2rxXiyLGxB4Bol7QTv4zHif7Zt89FReT/NBy4rzaskDJY5L6xmY=\n-----END CERTIFICATE-----",
  "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAwQHoetcl9+5ikGzV6cMzWtWPJHqXT3wpbEkRU9Yz7lgvddmG\ndtcGbg/1CGZu0jJGkMoppoUo4c3dts3iwqRYmBikUP77wwY2QGmDZw2FvkJCJlKn\nabIRuGvBKwzESIXgKk2016aTP6/dAjEHyo6SeoK8lkIySUvK0fyOVlsiEsCmOpid\ntnKX/a+50GjB79CJH4ER2lLVZnhePFR/zUOyPxZQQ4naHf7yu/b5jhO0f8fwt+py\nFxIXjbEIdZliWRkRMtzrHOJIhrmJ2A1J7iOrirbbwillwjjNVUWPf3IJ3M12S9pE\newooaeO2izNTERcG9HzAacbVRn2Y2SWIyT/18QIDAQABAoIBACbhTYXBZYKmYPCb\nHBR1IBlCQA2nLGf0qRuJNJZg5iEzXows/6tc8YymZkQE7nolapWsQ+upk2y5Xdp/\naxiuprIs9JzkYK8Ox0r+dlwCG1kSW+UAbX0bQ/qUqlsTvU6muVuMP8vZYHxJ3wmb\n+ufRBKztPTQ/rYWaYQcgC0RWI20HTFBMxlTAyNxYNWzX7RKFkGVVyB9RsAtmcc8g\n+j4OdosbfNoJPS0HeIfNpAznDfHKdxDk2Yc1tV6RHBrC1ynyLE9+TaflIAdo2MVv\nKLMLq51GqYKtgJFIlBRPQqKoyXdz3fGvXrTkf/WY9QNq0J1Vk5ERePZ54mN8iZB7\n9lwy/AkCgYEA6FXzosxswaJ2wQLeoYc7ceaweX/SwTvxHgXzRyJIIT0eJWgx13Wo\n/WA3Iziimsjf6qE+SI/8laxPp2A86VMaIt3Z3mJN/CqSVGw8LK2AQst+OwdPyDMu\niacE8lj/IFGC8mwNUAb9CzGU3JpU4PxxGFjS/eMtGeRXCWkK4NE+G08CgYEA1Kp9\nN2JrVlqUz+gAX+LPmE9OEMAS9WQSQsfCHGogIFDGGcNf7+uwBM7GAaSJIP01zcoe\nVAgWdzXCv3FLhsaZoJ6RyLOLay5phbu1iaTr4UNYm5WtYTzMzqh8l1+MFFDl9xDB\nvULuCIIrglM5MeS/qnSg1uMoH2oVPj9TVst/ir8CgYEAxrI7Ws9Zc4Bt70N1As+U\nlySjaEVZCMkqvHJ6TCuVZFfQoE0r0whdLdRLU2PsLFP+q7qaeZQqgBaNSKeVcDYR\n9B+nY/jOmQoPewPVsp/vQTCnE/R81spu0mp0YI6cIheT1Z9zAy322svcc43JaWB7\nmEbeqyLOP4Z4qSOcmghZBSECgYACvR9Xs0DGn+wCsW4vze/2ei77MD4OQvepPIFX\ndFZtlBy5ADcgE9z0cuVB6CiL8DbdK5kwY9pGNr8HUCI03iHkW6Zs+0L0YmihfEVe\nPG19PSzK9CaDdhD9KFZSbLyVFmWfxOt50H7YRTTiPMgjyFpfi5j2q348yVT0tEQS\nfhRqaQKBgAcWPokmJ7EbYQGeMbS7HC8eWO/RyamlnSffdCdSc7ue3zdVJxpAkQ8W\nqu80pEIF6raIQfAf8MXiiZ7auFOSnHQTXUbhCpvDLKi0Mwq3G8Pl07l+2s6dQG6T\nlv6XTQaMyf6n1yjzL+fzDrH3qXMxHMO/b13EePXpDMpY7HQpoLDi\n-----END RSA PRIVATE KEY-----",
  "certificateAuthority": "lets_encrypt",
  "certificateValidation": "http",
  "wildcardHostname": false
}
```

### CertificateEnvelope

*   `data` (_Certificate_, required)

_Example_

```
{
  "data": {
    "certificateId": "f90712123fb02287348dd34c0a282bb9",
    "hosts": [
      "example.com",
      "www.example.com"
    ],
    "expiresOn": "2025-12-31T23:59:59Z",
    "uploadedOn": "2024-01-01T00:00:00Z",
    "issuer": "Let's Encrypt Authority X3",
    "signature": "SHA256",
    "status": "ACTIVE",
    "minTlsVersion": "1.2",
    "certificateType": "custom",
    "certificateAuthority": "lets_encrypt",
    "certificateValidation": "http",
    "certificateVerificationTXTName": "_acme-challenge.example.com",
    "certificateVerificationTXTValue": "abc123def456ghi789",
    "certificateVerificationStatus": "ACTIVE",
    "wildcardHostname": false,
    "wildcardCertificateVerificationTXTName": "_acme-challenge.wildcard.example.com",
    "wildcardCertificateVerificationTXTValue": "wildcard_abc123def456",
    "wildcardCertificateVerificationStatus": "ACTIVE",
    "customHostnameVerificationTXTName": "_acme-challenge.custom.example.com",
    "customHostnameVerificationTXTValue": "custom_abc123def456",
    "customHostnameId": "f90712123fb02287348dd34c0a282bb9",
    "customHostname": "custom.example.com",
    "customHostnameStatus": "ACTIVE",
    "dcvDelegationRecords": []
  }
}
```

### CustomHostnameValidationEnvelope

*   `data` (_CustomHostnameValidationResponse_, required)

_Example_

```
{
  "data": {
    "customHostnameId": "a439eb1f-5e71-4544-bb29-54d18ax62277",
    "customHostname": "test.example.com",
    "customHostnameVerificationTXTName": "_acme-challenge.test.example.com",
    "customHostnameVerificationTXTValue": "DBCtxdyQSyo9eXxys-uGVCwPFHLsc8_lu11QetQz4IA",
    "customHostnameStatus": "ACTIVE"
  }
}
```

### MRTRulesResponseEnvelope

*   `data` (_MRTRulesResponse_, required)

_Example_

```
{
  "data": {
    "ruleset": {
      "id": "12345678901234asdfasfasdf",
      "name": "MRT Rules",
      "lastUpdated": "2022-01-01T05:20:00Z",
      "rules": []
    }
  }
}
```

### MRTRulesPostRequest

POST request for creating MRT rules. MRT rules are a way to route certain storefront requests to the managed runtime instance.

*   `mrtHostname` (_string_, required) The customer's MRT instance hostname.  
    Pattern: ^.\*$. Example: `customer-react-project-production.mobify-storefront.com`.
*   `expressions` (_array of string_, required) An array containing the expressions for each MRT rule.  
    Items: Pattern: ^.\*$. Example: `(http.host eq "dev-customer.salesforce.com" and not ( http.request.uri.path matches "^/path1/.*" or http.request.uri.path matches "^.*/path2/.*/products/.*"))`.
    
    _Example_
    
    ```
    [
      "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"^/path1/.*\" or http.request.uri.path matches \"^.*/path2/.*/products/.*\"))"
    ]
    ```
    
*   `descriptions` (_array of string_) An array containing the descriptions for each MRT rule. The number of descriptions provided must match the number of expressions provided. Optional.  
    Items: Pattern: ^.\*$. Example: `Phased rollout rule for dev-customer.salesforce.com`.
    
    _Example_
    
    ```
    [
      "Phased rollout rule for dev-customer.salesforce.com"
    ]
    ```
    

_Example_

```
{
  "mrtHostname": "customer-react-project-production.mobify-storefront.com",
  "expressions": [
    "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"^/path1/.*\" or http.request.uri.path matches \"^.*/path2/.*/products/.*\"))"
  ],
  "descriptions": [
    "Phased rollout rule for dev-customer.salesforce.com"
  ]
}
```

### MRTRulesetPatchRequest

PATCH request for updating the MRT environment hostname or adding MRT rules to route to an existing MRT environment.

*   `oldMrtHostname` (_string_) The customer's current MRT instance hostname.  
    Pattern: ^.\*$. Example: `customer-react-projec-production.mobify-storefront.com`.
*   `mrtHostname` (_string_, required) The customer's MRT instance hostname.  
    Pattern: ^.\*$. Example: `customer-react-projec-production.mobify-storefront.com`.
*   `expressions` (_array of string_) An array containing the expressions for each MRT rule.  
    Items: Pattern: ^.\*$. Example: `(http.host eq "dev-customer.salesforce.com" and not ( http.request.uri.path matches "^/path1/.*" or http.request.uri.path matches "^.*/path2/.*/products/.*"))`.
    
    _Example_
    
    ```
    [
      "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"^/path1/.*\" or http.request.uri.path matches \"^.*/path2/.*/products/.*\"))"
    ]
    ```
    
*   `descriptions` (_array of string_) An array containing the descriptions for each MRT rule. The number of descriptions provided must match the number of expressions provided. Optional.  
    Items: Pattern: ^.\*$. Example: `Phased rollout rule for dev-customer.salesforce.com`.
    
    _Example_
    
    ```
    [
      "Phased rollout rule for dev-customer.salesforce.com"
    ]
    ```
    

_Example_

```
{
  "mrtHostname": "customer-react-projec-production.mobify-storefront.com",
  "expressions": [
    "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"^/path1/.*\" or http.request.uri.path matches \"^.*/path2/.*/products/.*\"))"
  ],
  "descriptions": [
    "Phased rollout rule for dev-customer.salesforce.com"
  ]
}
```

### MRTRulePatchRequest

PATCH request for updating an MRT rule. You may use the PATCH request to update the rule's expression and description as well as disable/enable the rule.

*   `enabled` (_boolean_) Whether or not the rule is enabled.  
    Example: `true`.
*   `expression` (_string_) The expression that determines the MRT rule's routing behavior.  
    Pattern: ^.\*$. Example: `(http.host eq "dev-customer.salesforce.com" and not ( http.request.uri.path matches "^/path1/.*" or http.request.uri.path matches "^.*/path2/.*/products/.*"))`.
*   `description` (_string_) The description of the rule. Optional.  
    Pattern: ^.\*$. Example: `Phased rollout rule for dev-customer.salesforce.com`.

_Example_

```
{
  "enabled": true,
  "expression": "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"^/path1/.*\" or http.request.uri.path matches \"^.*/path2/.*/products/.*\"))",
  "description": "Phased rollout rule for dev-customer.salesforce.com"
}
```

### LogpushOwnershipPostRequest

POST request for creating new Logpush Ownership.

*   `destinationPath` (_string_, required) Uniquely identifies a resource (such as an s3 bucket) where data will be pushed. Additional configuration parameters supported by the destination may be included. You can use the special string {DATE} in the URL path to separate logs into daily subdirectories; for example s3://customer-bucket/logs/{DATE}?region=us-east-1&sse=AES256. The name of the directory will be replaced with the date in YYYYMMDD format (e.g. 20220215) when the logs are stored.  
    Pattern: ^.\*$. Example: `s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256`.

_Example_

```
{
  "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256"
}
```

### LogpushOwnershipPostResponse

POST response for created new Logpush Ownership.

*   `data` (_object_, required) The customer's new Logpush Ownership.
    *   `destinationPath` (_string_, required) Destination where logs will be sent (S3 bucket only).  
        Pattern: ^.\*$. Example: `s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256`.
    *   `fileName` (_string_, required) File path where the ownership challenge file is written.  
        Pattern: ^.\*$. Example: `site-name/20230101/ownership-challenge-d12345678.txt`.

_Example_

```
{
  "data": {
    "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
    "fileName": "site-name/20230101/ownership-challenge-d12345678.txt"
  }
}
```

### LogpushJobsEnvelope

*   `data` (_array of LogpushResponse_, required)

_Example_

```
{
  "data": [
    {
      "jobId": 123456,
      "name": "my-logpush-job",
      "logType": "http_requests",
      "filter": "{\"where\":{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/example-path\"}}",
      "logFields": [
        "ClientRequestBytes",
        "ClientRequestHost",
        "ClientRequestMethod"
      ],
      "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
      "enabled": false,
      "lastComplete": "2023-01-02T00:00:00Z",
      "lastError": "2023-01-01T10:00:00Z",
      "errorMessage": "No permissions to write to destination bucket",
      "createdOn": "2023-01-01T00:00:27Z"
    }
  ]
}
```

### LogpushCreateRequest

Request for create Logpush job.

*   `destinationPath` (_string_, required) Uniquely identifies s3 bucket for logs. Additional configuration parameters like region can be included. The string {DATE} in the URL path to separate logs into daily subdirectories; for example `s3://customer-bucket/logs/{DATE}?region=us-east-1&sse=AES256` The name of the directory will be replaced with the date in YYYYMMDD format (e.g. 20220215) when the logs are stored.  
    Pattern: ^.\*$. Example: `s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256`.
*   `name` (_string_, required) Logpush job name; the name cannot be changed after the job is created.  
    Pattern: ^.\*$. Example: `my-logpush-job`.
*   `filter` (_string_) Filter provides a way to customize which logs you want to receive. Filters are added as escaped JSON strings formatted. Default will include all logs.  
    Pattern: ^.\*$. Example: `{"where":{"key":"ClientRequestPath","operator":"contains","value":"/example-path"}}`.
*   `logFields` (_array of string_, required) List of log fields. Depending on the type of log, the list of fields that you would like to see in the logs may vary.  
    Items: Pattern: ^.\*$. Example: `ClientRequestBytes`.
    
    _Example_
    
    ```
    [
      "ClientRequestBytes",
      "ClientRequestHost",
      "ClientRequestMethod"
    ]
    ```
    
*   `ownershipChallengeToken` (_string_) Ownership token to proves the ownership of the destinationPath.  
    Pattern: ^.\*$. Example: `abc00000000000000000000`.
*   `enabled` (_boolean_) Enable logpush job while creating it.  
    Example: `true`.
*   `logType` (_string_, required) Type of logs. Available log types are `http_requests`, `firewall_events`, and `page_shield_events`.  
    Allowed values: `http_requests`, `firewall_events`, `page_shield_events`. Example: `http_requests`.

_Example_

```
{
  "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
  "name": "my-logpush-job",
  "filter": "{\"where\":{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/example-path\"}}",
  "logFields": [
    "ClientRequestBytes",
    "ClientRequestHost",
    "ClientRequestMethod"
  ],
  "ownershipChallengeToken": "abc00000000000000000000",
  "logType": "http_requests"
}
```

### LogpushEnvelope

*   `data` (_LogpushResponse_, required)

_Example_

```
{
  "data": {
    "jobId": 123456,
    "name": "my-logpush-job",
    "logType": "http_requests",
    "filter": "{\"where\":{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/example-path\"}}",
    "logFields": [
      "ClientRequestBytes",
      "ClientRequestHost",
      "ClientRequestMethod"
    ],
    "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
    "enabled": false,
    "lastComplete": "2023-01-02T00:00:00Z",
    "lastError": "2023-01-01T10:00:00Z",
    "errorMessage": "No permissions to write to destination bucket",
    "createdOn": "2023-01-01T00:00:27Z"
  }
}
```

### LogpushUpdateRequest

Request for update Logpush job

*   `destinationPath` (_string_) Uniquely identifies the destination path for log storage. This string can include additional configuration parameters, such as the AWS region. Use the {DATE} placeholder in the URL path to automatically organize logs into daily subdirectories; for example, `s3://customer-bucket/logs/{DATE}?region=us-east-1&sse=AES256`. At runtime, the {DATE} variable is replaced with the current date in YYYYMMDD format, for example, 20260127, to ensure logs are stored in the appropriate daily folder.  
    Pattern: ^.\*$. Example: `s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256`.
*   `enabled` (_boolean_) Flag that indicates if the job is enabled or disabled.  
    Example: `true`.
*   `filter` (_string_) Provides customized selection for logs you want to receive. Filters are added as escaped, formatted JSON strings. By default, all logs are included.  
    Pattern: ^.\*$. Example: `{"where":{"key":"ClientRequestPath","operator":"contains","value":"/example-path"}}`.
*   `logFields` (_array of string_) List of log fields. Depending on the log type, the list of fields that you can specify to be displayed in the log might vary.  
    Items: Pattern: ^.\*$. Example: `ClientRequestBytes`.
    
    _Example_
    
    ```
    [
      "ClientRequestBytes",
      "ClientRequestHost",
      "ClientRequestMethod"
    ]
    ```
    

_Example_

```
{
  "enabled": true,
  "filter": "{\"where\":{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/example-path\"}}",
  "logFields": [
    "ClientRequestBytes",
    "ClientRequestHost",
    "ClientRequestMethod"
  ]
}
```

### WAFRulePackageEnvelope

*   `data` (_WAFRulePackage_, required)

_Example_

```
{
  "data": {
    "id": "a25a9a7e9c00afc1fb2e0245519d725b",
    "name": "OWASP Top 10 Protection",
    "description": "Protection against OWASP Top 10 vulnerabilities",
    "detection_mode": "traditional",
    "zone_id": "zone_1234567890abcdef",
    "sensitivity": "medium",
    "action_mode": "block"
  }
}
```

### WafPackagePatchRequest

*   `sensitivity` (_string_, required) Sensitivity for traditional (owasp) rule package.  
    Allowed values: `low`, `medium`, `high`, `off`. Example: `medium`.
*   `action_mode` (_string_, required) The default action that is taken for rules under traditional(owasp) firewall package.  
    Allowed values: `simulate`, `challenge`, `block`. Example: `block`.

_Example_

```
{
  "sensitivity": "medium",
  "action_mode": "block"
}
```

### CustomRulesEnvelope

*   `data` (_array of CustomRule_, required)

_Example_

```
{
  "data": [
    {
      "ruleId": "2c0fc9fa937b11eaa1b71c4d701ab86e",
      "description": "Block traffic for malformed URL requests.",
      "expression": "(http.request.uri.path matches \"^/path1/.*\")",
      "actions": [
        "block"
      ],
      "lastUpdated": "2022-01-01T05:20:00Z",
      "enabled": true
    },
    {
      "ruleId": "ffffe61cf25e4ec49c34b029ff3060f7",
      "description": "Rate limit form traffic",
      "expression": "http.request.uri.path eq \"/form\"",
      "actions": [
        "block"
      ],
      "lastUpdated": "2022-12-14T21:25:22.329194Z",
      "enabled": false
    }
  ]
}
```

### CustomRulesPostRequest

Create a custom rule.

*   `description` (_string_, required) A description of the custom rule.  
    Pattern: ^.\*$. Example: `Block traffic for malformed URL requests`.
*   `expression` (_string_, required) The expression that determines the custom rule's behavior.  
    Pattern: ^.\*$. Example: `(http.request.uri.path matches \"^/path1/.*\")`.
*   `actions` (_array of string_, required) The action(s) applied by the custom rule.  
    Items: Pattern: ^.\*$. Example: `block`.
    
    _Example_
    
    ```
    [
      "block"
    ]
    ```
    
*   `enabled` (_boolean_) Whether or not the custom rule is enabled.  
    Example: `true`.
*   `position` (_RulePosition_)

### CustomRuleEnvelope

*   `data` (_CustomRule_, required)

_Example_

```
{
  "data": {
    "ruleId": "2c0fc9fa937b11eaa1b71c4d701ab86e",
    "description": "Block traffic for malformed URL requests.",
    "expression": "(http.request.uri.path matches \"^/path1/.*\")",
    "actions": [
      "block"
    ],
    "lastUpdated": "2022-01-01T05:20:00Z",
    "enabled": true
  }
}
```

### CustomRulesPatchOrderRequest

Update the order of all existing custom rules.

*   `ruleIds` (_array of string_, required) An array of ruleIds representing the new order of custom rules.  
    Items: Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
    
    _Example_
    
    ```
    [
      "ffffe61cf25e4ec49c34b029ff3060f7",
      "2c0fc9fa937b11eaa1b71c4d701ab86e"
    ]
    ```
    

### CustomRulesPatchRequest

Update a custom rule.

*   `description` (_string_) A description of the custom rule.  
    Pattern: ^.\*$. Example: `Block traffic for malformed URL requests`.
*   `expression` (_string_) The expression that determines the custom rule's behavior.  
    Pattern: ^.\*$. Example: `(http.request.uri.path matches \"^/path1/.*\")`.
*   `actions` (_array of string_) The action(s) applied by the custom rule.  
    Items: Pattern: ^.\*$. Example: `block`.
    
    _Example_
    
    ```
    [
      "block"
    ]
    ```
    
*   `enabled` (_boolean_) Whether or not the custom rule is enabled.  
    Example: `true`.
*   `position` (_RulePosition_)

### RateLimitingRulesEnvelope

*   `data` (_array of RateLimitingRule_, required)

### RateLimitingRulesPostRequest

Create a rate limiting rule.

*   `description` (_string_, required) The description of the rate limiting rule.  
    Pattern: ^.\*$. Example: `Rate limit /path1.`.
*   `expression` (_string_, required) The expression that defines when to evaluate the rate limiting rule.  
    Pattern: ^.\*$. Example: `(http.request.uri.path matches "^/path1/.*")`.
*   `characteristics` (_array of string_, required) Set of parameters defining how to group requests when tracking the request rate.  
    Items: Pattern: ^.\*$. Example: `cf.unique_visitor_id`.
    
    _Example_
    
    ```
    [
      "cf.unique_visitor_id"
    ]
    ```
    
*   `action` (_string_, required) The action applied by the rate limiting rule. Valid actions are "block", "managed\_challenge", "js\_challenge", "legacy\_captcha", and "log".  
    Pattern: ^.\*$. Example: `block`.
*   `period` (_integer_, required) The period of time to consider when evaluating the request rate (in seconds). Valid values are 10, 60, 120, 300, and 600.  
    Example: `60`.
*   `requestsPerPeriod` (_integer_, required) The limit for the number of requests in the specified period of time.  
    Example: `50`.
*   `mitigationTimeout` (_integer_, required) After the rate is reached, the rate limiting rule applies the rule action to further requests for the period of time defined in this field (in seconds). When set to 0, the rule throttles requests over the maximum configured rate. When greater than 0, the action is presented for the selected duration after the configured rate is exceeded. Valid values are 0, 60, 120, 300, 600, 3600, and 86400.  
    Example: `600`.
*   `countingExpression` (_string_) The expression that defines what kind of requests we want to rate limit.  
    Pattern: ^.\*$. Example: `(http.request.uri.path matches "^/path1/.*" and http.response.code eq 400)`.
*   `enabled` (_boolean_) Whether or not the rate limiting rule is enabled.  
    Example: `true`.
*   `position` (_RulePosition_)

### RateLimitingRuleEnvelope

*   `data` (_RateLimitingRule_, required)

### RateLimitingRulesPatchRequest

Update a rate limiting rule.

*   `description` (_string_) The description of the rate limiting rule.  
    Pattern: ^.\*$. Example: `Rate limit /path1.`.
*   `expression` (_string_) The expression that defines when to evaluate the rate limiting rule.  
    Pattern: ^.\*$. Example: `(http.request.uri.path matches "^/path1/.*")`.
*   `characteristics` (_array of string_) Set of parameters defining how to group requests when tracking the request rate.  
    Items: Pattern: ^.\*$. Example: `cf.unique_visitor_id`.
    
    _Example_
    
    ```
    [
      "cf.unique_visitor_id"
    ]
    ```
    
*   `action` (_string_) The action applied by the rate limiting rule. Valid actions are "block", "managed\_challenge", "js\_challenge", "legacy\_captcha", and "log".  
    Pattern: ^.\*$. Example: `block`.
*   `period` (_integer_) The period of time to consider when evaluating the request rate (in seconds). Valid values are 10, 60, 120, 300, and 600.  
    Example: `60`.
*   `requestsPerPeriod` (_integer_) The limit for the number of requests in the specified period of time.  
    Example: `50`.
*   `mitigationTimeout` (_integer_) After the rate is reached, the rate limiting rule applies the rule action to further requests for the period of time defined in this field (in seconds). When set to 0, the rule throttles requests over the maximum configured rate. When greater than 0, the action is presented for the selected duration after the configured rate is exceeded. Valid values are 0, 60, 120, 300, 600, 3600, and 86400.  
    Example: `600`.
*   `countingExpression` (_string_) The expression that defines what kind of requests we want to rate limit.  
    Pattern: ^.\*$. Example: `(http.request.uri.path matches "^/path1/.*" and http.response.code eq 400)`.
*   `enabled` (_boolean_) Whether or not the rate limiting rule is enabled.  
    Example: `true`.
*   `position` (_RulePosition_)

### WAFManagedRulesetsEnvelope

*   `data` (_array of WAFManagedRuleset_, required)

_Example_

```
{
  "data": [
    {
      "name": "OWASP Core Ruleset",
      "rulesetId": "4814384a9e5d4991b9815dcfc25d2f1f",
      "action": "default",
      "anomalyScore": "low",
      "anomalyScoreThreshold": 60,
      "paranoiaLevel": 1,
      "enabled": true
    }
  ]
}
```

### WAFManagedRulesetRequest

A WAF managed ruleset request body.

*   `action` (_string_) The action applied by the WAF managed ruleset.  
    Pattern: ^.\*$. Example: `default`.
*   `anomalyScore` (_string_) The anomaly score threshold of the WAF managed ruleset. Only applicable for the OWASP Core Ruleset.  
    Pattern: ^.\*$. Example: `low`.
*   `paranoiaLevel` (_integer_) The paranoia level of the WAF managed ruleset. Higher paranoia levels activate more aggressive rules. Only applicable for the OWASP Core Ruleset.  
    Example: `1`.
*   `enabled` (_boolean_) Whether or not the WAF managed ruleset is enabled.  
    Example: `true`.

_Example_

```
{
  "action": "default",
  "anomalyScore": "low",
  "paranoiaLevel": 1,
  "enabled": true
}
```

### WAFManagedRulesetEnvelope

*   `data` (_WAFManagedRuleset_, required)

_Example_

```
{
  "data": {
    "name": "OWASP Core Ruleset",
    "rulesetId": "4814384a9e5d4991b9815dcfc25d2f1f",
    "action": "default",
    "anomalyScore": "low",
    "anomalyScoreThreshold": 60,
    "paranoiaLevel": 1,
    "enabled": true
  }
}
```

### WAFManagedRulesEnvelope

*   `data` (_array of WAFManagedRule_, required)

_Example_

```
{
  "data": [
    {
      "ruleId": "5de7edfa648c4d6891dc3e7f84534ffa",
      "action": "block",
      "score": 5,
      "categories": [
        "broken-access-control",
        "wordpress"
      ],
      "description": "Wordpress - Broken Access Control",
      "lastUpdated": "2024-01-01T05:20:00Z",
      "enabled": true
    }
  ]
}
```

### WAFManagedRuleRequest

A PATCH request for updating a WAF managed rule.

*   `action` (_string_) The action applied by the WAF managed rule.  
    Pattern: ^.\*$. Example: `block`.
*   `enabled` (_boolean_) Whether or not the WAF managed rule is enabled.  
    Example: `true`.

_Example_

```
{
  "action": "block",
  "enabled": true
}
```

### WAFManagedRuleEnvelope

*   `data` (_WAFManagedRule_, required)

_Example_

```
{
  "data": {
    "ruleId": "5de7edfa648c4d6891dc3e7f84534ffa",
    "action": "block",
    "score": 5,
    "categories": [
      "broken-access-control",
      "wordpress"
    ],
    "description": "Wordpress - Broken Access Control",
    "lastUpdated": "2024-01-01T05:20:00Z",
    "enabled": true
  }
}
```

### OriginHeaderModificationEnvelope

*   `data` (_OriginHeaderModification_, required)

### OriginHeaderModificationPutRequest

Put request for creating/updating the origin header modification.

*   `headerValue` (_string_, required) The value of the header forwarded to the origin.  
    Pattern: ^.\*$. Example: `123456789`.
*   `headerName` (_string_) The name of the header forwarded to the origin. Cannot be modified for the MRT origin.  
    Pattern: ^.\*$. Example: `x-sfdc-access-control`.

### CipherSuitesEnvelope

*   `data` (_CipherSuitesResponse_, required)

_Example_

```
{
  "data": {
    "cipherSuiteType": "Modern"
  }
}
```

### CipherSuitesRequest

Cipher suites information.

*   `ciphers` (_array of string_) List of zone level ciphers in the suite.  
    Items: Pattern: ^.\*$. Example: `ECDHE-ECDSA-AES128-GCM-SHA256`.
    
    _Example_
    
    ```
    [
      "ECDHE-ECDSA-AES128-GCM-SHA256",
      "ECDHE-RSA-AES128-GCM-SHA256"
    ]
    ```
    
*   `cipherSuiteType` (_string_, required) Classification of all ciphers in the suite.  
    Allowed values: `Compatible`, `Modern`, `Custom`, `Legacy`. Example: `Modern`.

_Example_

```
{
  "cipherSuiteType": "Modern"
}
```

### TurnstileWidgetsEnvelope

*   `data` (_array of TurnstileWidget_, required)

### TurnstileWidgetCreateRequest

Request body to create a new Cloudflare Turnstile widget.

*   `name` (_string_, required) Logical widget name. Must be non-blank, not already contain the environment suffix, and must be at most 227 characters long so that the full Cloudflare-side name (`{name}-{environment}`) stays within the 255 character limit enforced for widgets.  
    Minimum length: 1. Maximum length: 227. Example: `checkout`.
*   `domains` (_array of string_, required) Hostnames allowed to present this widget.  
    Items: Minimum length: 1. Maximum length: 253. Example: `shop.example.com`. Minimum items: 1.
    
    _Example_
    
    ```
    [
      "shop.example.com",
      "www.example.com"
    ]
    ```
    
*   `mode` (_TurnstileWidgetMode_, required)

### TurnstileWidgetEnvelope

*   `data` (_TurnstileWidget_, required)

### TurnstileWidgetUpdateRequest

Request body to update an existing Cloudflare Turnstile widget. At least one of `domains` or `mode` must be supplied.

*   `domains` (_array of string_) Replacement list of hostnames allowed to present this widget.  
    Items: Minimum length: 1. Maximum length: 253. Example: `shop.example.com`. Minimum items: 1.
    
    _Example_
    
    ```
    [
      "shop.example.com",
      "www.example.com"
    ]
    ```
    
*   `mode` (_TurnstileWidgetMode_)

### StorefrontZoneCreateResponse

The response of create zone, includes zone and zone properties.

*   `zoneId` (_string_, required) The zone id tag.  
    Pattern: ^.\*$. Example: `023e105f4ecef8ad9ca31a8372d0c353`.
*   `zoneName` (_string_, required) The domain name for the zone.  
    Pattern: ^.\*$. Example: `stg-zzzz-cc-merchant-com.cc-ecdn.net`.
*   `status` (_string_, required) current status of the zone  
    Allowed values: `active`, `pending`, `initializing`, `moved`, `deleted`, `deactivated`. Example: `active`.
*   `createdOn` (_string (date-time)_, required) Date and time of zone creation.  
    Example: `2014-01-01T05:20:00.12345Z`.

### MtlsCertificateResponse

mTLS certificate information.

*   `mtlsCertificateId` (_string_) ID generated by the CDN provider for the certificate.  
    Pattern: ^.\*$. Example: `465a48f6-3d98-4c15-9312-211984ee8629`.
*   `expiresOn` (_string (date-time)_) Expiration date for the mTLS certificate.  
    Example: `2022-01-12T04:15:57Z`.
*   `issuer` (_string_) The certificate authority that issued the mTLS certificate.  
    Pattern: ^.\*$. Example: `DigiCert`.
*   `signature` (_string_) The type of hash used for the mTLS certificate.  
    Pattern: ^.\*$. Example: `SHA256WithRSA`.
*   `uploadedOn` (_string (date-time)_) Date the mTLS certificate was uploaded.  
    Example: `2020-01-12T04:15:57Z`.
*   `ca` (_boolean_) Indicates whether the mTLS certificate is a CA or leaf certificate.  
    Example: `true`.
*   `serialNumber` (_string_) The mTLS certificate serial number.  
    Pattern: ^.\*$. Example: `432217133297895665180570788458463042229861757760`.
*   `mtlsCertificateName` (_string_) Optional name for the mTLS certificate used for ease of understanding.  
    Pattern: ^.\*$. Example: `mtls_cert_name`.
*   `mtlsAssociatedCodeUploadHostname` (_string_) Hostname associated with this mTLS certificate.  
    Pattern: ^.\*$. Example: `mtls.cert.salesforce.com`.

### PageShieldNotificationWebhookResponse

Page shield notification for the webhook response.

*   `id` (_string_, required) Webhook ID.  
    Pattern: ^.\*$. Example: `webhook_1234567890abcdef`.
*   `name` (_string_, required) Webhook name.  
    Pattern: ^.\*$. Example: `Security Alert Webhook`.
*   `webhookUrl` (_string_, required) Webhook URL.  
    Pattern: ^.\*$. Example: `https://example.com/webhook/security`.
*   `type` (_string_, required) Webhook type.  
    Pattern: ^.\*$. Example: `security_alert`.
*   `createdAt` (_string (date-time)_, required) Timestamp of webhook creation.  
    Example: `2023-01-01T00:00:00Z`.
*   `lastSuccess` (_string (date-time)_) Timestamp of the last successful notification.  
    Example: `2023-01-01T12:00:00Z`.
*   `lastFailure` (_string (date-time)_) Timestamp of the last failed notification.  
    Example: `2023-01-01T18:00:00Z`.
*   `enabled` (_boolean_) Specifies whether or not the notification is enabled.  
    Example: `true`.
*   `zones` (_array of string_) Zone IDs on which to filter notifications alerts.  
    Items: Pattern: ^.\*$. Example: `zone_1234567890abcdef`.

_Example_

```
{
  "id": "webhook_1234567890abcdef",
  "name": "Security Alert Webhook",
  "webhookUrl": "https://example.com/webhook/security",
  "type": "security_alert",
  "createdAt": "2023-01-01T00:00:00Z",
  "lastSuccess": "2023-01-01T12:00:00Z",
  "lastFailure": "2023-01-01T18:00:00Z",
  "enabled": true,
  "zones": [
    "zone_1234567890abcdef"
  ]
}
```

### WebhookResponse

Webhook response

*   `id` (_string_, required) Webhook ID  
    Pattern: ^.\*$. Example: `ffffe61cf25e4ec49c34b029ff3060f7`.
*   `name` (_string_, required) Webhook name  
    Pattern: ^.\*$. Example: `My Webhook`.
*   `url` (_string_, required) Webhook URL  
    Pattern: ^.\*$. Example: `https://example.com/webhook`.
*   `type` (_string_, required) Webhook type  
    Pattern: ^.\*$. Example: `webhook`.
*   `createdAt` (_string (date-time)_, required) Timestamp of webhook creation  
    Example: `2023-01-01T00:00:00Z`.
*   `lastSuccess` (_string (date-time)_) Timestamp of the last successful notification  
    Example: `2023-01-01T12:00:00Z`.
*   `lastFailure` (_string (date-time)_) Timestamp of the last failed notification  
    Example: `2023-01-01T18:00:00Z`.

### PageShieldPolicyResponse

Page shield policy response.

*   `action` (_string_) Action taken when expression matches allow or log.  
    Allowed values: `allow`, `log`. Example: `allow`.
*   `description` (_string_) Description for the policy.  
    Pattern: ^.\*$. Example: `Allow scripts from trusted CDN sources`.
*   `enabled` (_boolean_) Enable/disable the policy.  
    Example: `true`.
*   `expression` (_string_) Expression of the policy.  
    Pattern: ^.\*$. Example: `http.request.uri.path contains "/trusted-cdn/"`.
*   `value` (_string_) Policy to be applied.  
    Pattern: ^.\*$. Example: `script-src`.
*   `id` (_string_) Policy ID  
    Pattern: ^.\*$. Example: `policy_1234567890abcdef`.

_Example_

```
{
  "action": "allow",
  "description": "Allow scripts from trusted CDN sources",
  "enabled": true,
  "expression": "http.request.uri.path contains \"/trusted-cdn/\"",
  "value": "script-src",
  "id": "policy_1234567890abcdef"
}
```

### PageShieldScriptResponse

Response of Page Shield script object.

*   `id` (_string_) Page Shield script ID.  
    Pattern: ^.\*$. Example: `12345678901234asdfasfasdf`.
*   `url` (_string_) Page Shield script URL.  
    Pattern: ^.\*$. Example: `https://sfdc-test.net/on/demandware.static/Sites-SiteNemesis-Site/-/en_US//lib/jquery/ui/jquery-ui.min.js`.
*   `host` (_string_) Hostname where the script was detected by Page Shield.  
    Pattern: ^.\*$. Example: `sfdc-test.net`.
*   `addedAt` (_string (date-time)_) Date the script was added to Page Shield.  
    Example: `2022-01-01T05:20:00Z`.
*   `firstSeenAt` (_string (date-time)_) Date the script was detected by Page Shield.  
    Example: `2022-01-01T05:20:00Z`.
*   `lastSeenAt` (_string (date-time)_) Date the script was recently detected by Page Shield.  
    Example: `2022-01-01T05:20:00Z`.
*   `fetchedAt` (_string (date-time)_) The timestamp when the script was last fetched.  
    Example: `2022-01-01T05:20:00Z`.
*   `domainReportedMalicious` (_boolean_) Reported domain is malicious.  
    Example: `false`.
*   `hash` (_string_) The computed hash of the analyzed script.  
    Pattern: ^.\*$. Example: `1243453456abc`.
*   `cryptoMiningScore` (_integer_) The crypto mining score of the JavaScript content.  
    Example: `1`.
*   `dataflowScore` (_integer_) The dataflow score of the JavaScript content.  
    Example: `1`.
*   `jsIntegrityScore` (_integer_) The integrity score of the JavaScript content.  
    Example: `1`.
*   `mageCartScore` (_integer_) The Magecart score of the JavaScript content.  
    Example: `2`.
*   `malwareScore` (_integer_) The malware score of the JavaScript content.  
    Example: `1`.
*   `obfuscationScore` (_integer_) The obfuscation score of the JavaScript content.  
    Example: `2`.
*   `maliciousDomainCategories` (_array of string_) Malicious domain category.  
    Items: Pattern: ^.\*$. Example: `Malware`.
    
    _Example_
    
    ```
    [
      "Malware"
    ]
    ```
    
*   `maliciousUrlCategories` (_array of string_) Malicious URL category.  
    Items: Pattern: ^.\*$. Example: `Malware`.
    
    _Example_
    
    ```
    [
      "Malware"
    ]
    ```
    
*   `urlContainsCdnCgiPath` (_boolean_) URL contains CDN CGI path.  
    Example: `false`.
*   `urlReportedMalicious` (_boolean_) Reported URL is malicious.  
    Example: `false`.
*   `pageUrls` (_array of string_) Page URLs  
    Items: Pattern: ^.\*$. Example: `blog.test.salesforce.com/page1`.
    
    _Example_
    
    ```
    [
      "blog.test.salesforce.com/page1",
      "blog.test.salesforce.com/page2"
    ]
    ```
    
*   `firstPageUrl` (_string_) First page URL for the JavaScript.  
    Pattern: ^.\*$. Example: `blog.test.salesforce.com`.
*   `status` (_string_) The current status of the script. Possible values are active, inactive, or infrequent.  
    Pattern: ^.\*$. Example: `active`.
*   `versions` (_array of PageShieldScriptVersion_) List of script versions.

_Example_

```
{
  "id": "12345678901234asdfasfasdf",
  "url": "https://sfdc-test.net/on/demandware.static/Sites-SiteNemesis-Site/-/en_US//lib/jquery/ui/jquery-ui.min.js",
  "host": "sfdc-test.net",
  "addedAt": "2022-01-01T05:20:00Z",
  "firstSeenAt": "2022-01-01T05:20:00Z",
  "lastSeenAt": "2022-01-01T05:20:00Z",
  "fetchedAt": "2022-01-01T05:20:00Z",
  "domainReportedMalicious": false,
  "hash": "1243453456abc",
  "cryptoMiningScore": 1,
  "dataflowScore": 1,
  "jsIntegrityScore": 1,
  "mageCartScore": 2,
  "malwareScore": 1,
  "obfuscationScore": 2,
  "maliciousDomainCategories": [
    "Malware"
  ],
  "maliciousUrlCategories": [
    "Malware"
  ],
  "urlContainsCdnCgiPath": false,
  "urlReportedMalicious": false,
  "pageUrls": [
    "blog.test.salesforce.com/page1",
    "blog.test.salesforce.com/page2"
  ],
  "firstPageUrl": "blog.test.salesforce.com",
  "status": "active",
  "versions": []
}
```

### Zone

Zone

Zone is the container for hostnames and various CDN settings/properties. Each zone is tied to a single origin.

*   `zoneId` (_string_, required) Identity of the zone.  
    Maximum length: 100. Example: `example1-zone-Id`.
*   `name` (_string_, required) Name given to the zone. This needs to be a DNS domain name for eg example.com  
    Maximum length: 100. Example: `example1.com`.
*   `status` (_string_, required) Status of the zone for eg "Pending" , "Active"  
    Allowed values: `active`, `pending`, `initializing`, `moved`, `deleted`, `deactivated`. Example: `pending`.

_Example_

```
{
  "zoneId": "example1-zone-Id",
  "name": "example1.com",
  "status": "pending"
}
```

### CachePurgeResponse

Response from a cache purge request

*   `cachePurged` (_boolean_, required) The name of the list.  
    Example: `false`.
*   `details` (_string_, required) Details of errors if any.  
    Pattern: ^.\*$. Example: `1084 : Unable to purge '<url>'.`.

_Example_

```
{
  "cachePurged": false,
  "details": "1084 : Unable to purge '<url>'."
}
```

### CacheRule

A cache rule configuration.

*   `ruleId` (_string_, required) The unique identifier for the cache rule.  
    Pattern: ^.\*$. Example: `2c0fc9fa937b11eaa1b71c4d701ab86e`.
*   `description` (_string_, required) A description of what the cache rule does.  
    Pattern: ^.\*$. Example: `Cache static assets on product pages`.
*   `expression` (_string_, required) The expression that defines when this cache rule applies.  
    Pattern: ^.\*$. Example: `(http.request.uri.path matches "^/product/.*")`.
*   `action` (_string_, required) The action to take ("cache" to enable caching, "bypass" to bypass cache).  
    Pattern: ^.\*$. Example: `cache`.
*   `excludeQueryStrings` (_array of string_) List of query string parameters to exclude from the cache key.  
    Items: Pattern: ^.\*$. Example: `gclid`.
    
    _Example_
    
    ```
    [
      "gclid",
      "utm_campaign"
    ]
    ```
    
*   `ignoreQueryStringsOrder` (_boolean_) Specifies whether the order of query string parameters in the cache key is ignored.  
    Example: `true`.
*   `respectStrongEtags` (_boolean_) Specifies whether strong ETags are respected.  
    Example: `false`.
*   `lastUpdated` (_string (date-time)_) The timestamp when the rule was last updated.  
    Example: `2022-01-01T05:20:00Z`.
*   `enabled` (_boolean_, required) Specifies whether the rule is enabled.  
    Example: `true`.

### RulePosition

Used to specify the position of a rule.

*   `before` (_string_) Insert the current rule before this ruleId.  
    Pattern: ^.\*$. Example: `2c0fc9fa937b11eaa1b71c4d701ab86e`.
*   `after` (_string_) Insert the current rule after this ruleId.  
    Pattern: ^.\*$. Example: `2c0fc9fa937b11eaa1b71c4d701ab86e`.

### Certificate

The certificate information

*   `certificateId` (_string_, required) Id generated by CDN provider for the certificate.  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `hosts` (_array of string_) List of hosts the certificate applies to.  
    Items: Pattern: ^.\*$. Example: `example.com`.
    
    _Example_
    
    ```
    [
      "example.com",
      "www.example.com"
    ]
    ```
    
*   `expiresOn` (_string (date-time)_) Date of expiration for the certificate.  
    Example: `2025-12-31T23:59:59Z`.
*   `uploadedOn` (_string (date-time)_) Date the certificate was uploaded.  
    Example: `2024-01-01T00:00:00Z`.
*   `issuer` (_string_) The certificate authority that issued the certificate.  
    Pattern: ^.\*$. Example: `Let's Encrypt Authority X3`.
*   `signature` (_string_) The type of hash used for the certificate.  
    Pattern: ^.\*$. Example: `SHA256`.
*   `status` (_string_, required) Current status of the certificate.  
    Allowed values: `ACTIVE`, `EXPIRED`, `DELETED`, `PENDING`, `INITIALIZING`, `PENDING_VALIDATION`, `PENDING_ISSUANCE`, `PENDING_DEPLOYMENT`, `PENDING_DELETION`, `VALIDATION_TIMED_OUT`, `DEPLOYMENT_TIMED_OUT`, `DELETION_TIMED_OUT`, `INITIALIZING_TIMED_OUT`, `PENDING_EXPIRATION`, `ISSUANCE_TIMED_OUT`. Example: `ACTIVE`.
*   `minTlsVersion` (_string_) Minimum TLS Version only allows HTTPS connections from visitors that support the selected TLS protocol version or newer.  
    Pattern: ^.\*$. Example: `1.2`.
*   `certificateType` (_string_, required) Indicates certificate is custom cert uploaded by customer or automatic renewal certificate by eCDN.  
    Allowed values: `custom`, `automatic`, `custom_legacy`. Example: `custom`.
*   `certificateAuthority` (_string_) Indicates certificate issuer for automatic renewal certificate by eCDN.  
    Allowed values: `google`, `lets_encrypt`, `digicert`. Example: `lets_encrypt`.
*   `certificateValidation` (_string_) Indicates certificate validation type for automatic renewal certificate by eCDN.  
    Allowed values: `http`, `txt`. Example: `http`.
*   `certificateVerificationTXTName` (_string_) eCDN automatic renewal certificate verification txt name.  
    Pattern: ^.\*$. Example: `_acme-challenge.example.com`.
*   `certificateVerificationTXTValue` (_string_) eCDN automatic renewal certificate verification txt value.  
    Pattern: ^.\*$. Example: `abc123def456ghi789`.
*   `certificateVerificationStatus` (_string_) Current status of certificate verification.  
    Allowed values: `ACTIVE`, `EXPIRED`, `PENDING`, `INITIALIZING`, `PENDING_VALIDATION`, `PENDING_ISSUANCE`, `PENDING_DEPLOYMENT`. Example: `ACTIVE`.
*   `wildcardHostname` (_boolean_) Set to true for a wildcard custom hostname.  
    Example: `false`.
*   `wildcardCertificateVerificationTXTName` (_string_) eCDN automatic renewal certificate verification txt name.  
    Pattern: ^.\*$. Example: `_acme-challenge.wildcard.example.com`.
*   `wildcardCertificateVerificationTXTValue` (_string_) eCDN automatic renewal certificate verification txt value.  
    Pattern: ^.\*$. Example: `wildcard_abc123def456`.
*   `wildcardCertificateVerificationStatus` (_string_) Current status of certificate verification.  
    Allowed values: `ACTIVE`, `EXPIRED`, `PENDING`, `INITIALIZING`, `PENDING_VALIDATION`, `PENDING_ISSUANCE`, `PENDING_DEPLOYMENT`. Example: `ACTIVE`.
*   `customHostnameVerificationTXTName` (_string_) Custom Hostname verification txt name.  
    Pattern: ^.\*$. Example: `_acme-challenge.custom.example.com`.
*   `customHostnameVerificationTXTValue` (_string_) Custom Hostname verification txt value.  
    Pattern: ^.\*$. Example: `custom_abc123def456`.
*   `customHostnameId` (_string_) Custom hostname associated with the zone  
    Pattern: ^.\*$. Example: `f90712123fb02287348dd34c0a282bb9`.
*   `customHostname` (_string_) Custom hostname associated with the zone  
    Pattern: ^.\*$. Example: `custom.example.com`.
*   `customHostnameStatus` (_string_) Current status of custom hostname validation.  
    Allowed values: `ACTIVE`, `EXPIRED`, `DELETED`, `PENDING`, `INITIALIZING`, `PENDING_VALIDATION`, `PENDING_ISSUANCE`, `PENDING_DEPLOYMENT`, `PENDING_DELETION`, `MOVED`. Example: `ACTIVE`.
*   `verificationErrors` (_array of string_) When the custom hostname is not active, Cloudflare returns one or more verification error messages explaining why. This field is omitted if the hostname is active or no errors are present.  
    Items: Pattern: ^.\*$. Example: `The hostname is using Cloudflare and cannot be activated with a TXT or HTTP validation token. To activate the custom hostname, the DNS target needs to point to the SaaS zone.`.
    
    _Example_
    
    ```
    [
      "custom hostname does not CNAME to this zone.",
      "The hostname is using Cloudflare and cannot be activated with a TXT or HTTP validation token. To activate the custom hostname, the DNS target needs to point to the SaaS zone."
    ]
    ```
    
*   `dcvDelegationRecords` (_array of DCVDelegationRecord_) eCDN automatic renewal certificate DCV delegation records

_Example_

```
{
  "certificateId": "f90712123fb02287348dd34c0a282bb9",
  "hosts": [
    "example.com",
    "www.example.com"
  ],
  "expiresOn": "2025-12-31T23:59:59Z",
  "uploadedOn": "2024-01-01T00:00:00Z",
  "issuer": "Let's Encrypt Authority X3",
  "signature": "SHA256",
  "status": "ACTIVE",
  "minTlsVersion": "1.2",
  "certificateType": "custom",
  "certificateAuthority": "lets_encrypt",
  "certificateValidation": "http",
  "certificateVerificationTXTName": "_acme-challenge.example.com",
  "certificateVerificationTXTValue": "abc123def456ghi789",
  "certificateVerificationStatus": "ACTIVE",
  "wildcardHostname": false,
  "wildcardCertificateVerificationTXTName": "_acme-challenge.wildcard.example.com",
  "wildcardCertificateVerificationTXTValue": "wildcard_abc123def456",
  "wildcardCertificateVerificationStatus": "ACTIVE",
  "customHostnameVerificationTXTName": "_acme-challenge.custom.example.com",
  "customHostnameVerificationTXTValue": "custom_abc123def456",
  "customHostnameId": "f90712123fb02287348dd34c0a282bb9",
  "customHostname": "custom.example.com",
  "customHostnameStatus": "ACTIVE",
  "dcvDelegationRecords": []
}
```

### CustomHostnameValidationResponse

Custom hostname validation information.

*   `customHostnameId` (_string_, required) Identifier generated by the CDN provider for the custom hostname.  
    Pattern: ^.\*$. Example: `a439eb1f-5e71-4544-bb29-54d18ax62277`.
*   `customHostname` (_string_, required) Name of the custom hostname  
    Pattern: ^.\*$. Example: `test.example.com`.
*   `customHostnameVerificationTXTName` (_string_, required) Custom hostname verification txt name.  
    Pattern: ^.\*$. Example: `_acme-challenge.test.example.com`.
*   `customHostnameVerificationTXTValue` (_string_, required) Custom hostname verification txt value.  
    Pattern: ^.\*$. Example: `DBCtxdyQSyo9eXxys-uGVCwPFHLsc8_lu11QetQz4IA`.
*   `customHostnameStatus` (_string_, required) Current status of the custom hostname.  
    Allowed values: `PENDING`, `ACTIVE`, `MOVED`, `DELETED`. Example: `ACTIVE`.

_Example_

```
{
  "customHostnameId": "a439eb1f-5e71-4544-bb29-54d18ax62277",
  "customHostname": "test.example.com",
  "customHostnameVerificationTXTName": "_acme-challenge.test.example.com",
  "customHostnameVerificationTXTValue": "DBCtxdyQSyo9eXxys-uGVCwPFHLsc8_lu11QetQz4IA",
  "customHostnameStatus": "ACTIVE"
}
```

### MRTRulesResponse

Response for MRT rules. MRT rules are a way to route certain storefront requests to the managed runtime instance.

*   `ruleset` (_MRTRuleset_, required)

_Example_

```
{
  "ruleset": {
    "id": "12345678901234asdfasfasdf",
    "name": "MRT Rules",
    "lastUpdated": "2022-01-01T05:20:00Z",
    "rules": []
  }
}
```

### LogpushResponse

Logpush job response

*   `jobId` (_integer_) Unique ID of the job.  
    Example: `123456`.
*   `name` (_string_) Logpush job name; the name cannot be changed after the job is created.  
    Pattern: ^.\*$. Example: `my-logpush-job`.
*   `logType` (_string_) Type of logs; available log types are `http_requests`, `firewall_events`, and `page_shield_events`.  
    Allowed values: `http_requests`, `firewall_events`, `page_shield_events`. Example: `http_requests`.
*   `filter` (_string_) Filter provides a way to customize which logs you want to receive. Filters are added as escaped JSON strings formatted. If the filter is not displayed, it indicates that all logs should be included.  
    Pattern: ^.\*$. Example: `{"where":{"key":"ClientRequestPath","operator":"contains","value":"/example-path"}}`.
*   `logFields` (_array of string_) List of log fields. Depending on the type of log, the list of fields that you would like to see in the logs may vary.  
    Items: Pattern: ^.\*$. Example: `ClientRequestBytes`.
    
    _Example_
    
    ```
    [
      "ClientRequestBytes",
      "ClientRequestHost",
      "ClientRequestMethod"
    ]
    ```
    
*   `destinationPath` (_string_) Uniquely identifies s3 bucket for logs.  
    Pattern: ^.\*$. Example: `s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256`.
*   `enabled` (_boolean_) Flag that indicates if the job is enabled or disabled.  
    Example: `false`.
*   `lastComplete` (_string (date-time)_) The last time that the log has been successfully transmitted to the destination.  
    Example: `2023-01-02T00:00:00Z`.
*   `lastError` (_string (date-time)_) The last time the job failed. If empty, the job has either never failed or has run successfully at least once since the last failure.  
    Example: `2023-01-01T10:00:00Z`.
*   `errorMessage` (_string_) Provide details for the last failure message. If this field is empty, it indicates that the job successfully transmitted logs to the destination.  
    Pattern: ^.\*$. Example: `No permissions to write to destination bucket`.
*   `createdOn` (_string (date-time)_) Job creation time.  
    Example: `2023-01-01T00:00:27Z`.

_Example_

```
{
  "jobId": 123456,
  "name": "my-logpush-job",
  "logType": "http_requests",
  "filter": "{\"where\":{\"key\":\"ClientRequestPath\",\"operator\":\"contains\",\"value\":\"/example-path\"}}",
  "logFields": [
    "ClientRequestBytes",
    "ClientRequestHost",
    "ClientRequestMethod"
  ],
  "destinationPath": "s3://customer-bucket/site-name/{DATE}?region=us-east-1&sse=AES256",
  "enabled": false,
  "lastComplete": "2023-01-02T00:00:00Z",
  "lastError": "2023-01-01T10:00:00Z",
  "errorMessage": "No permissions to write to destination bucket",
  "createdOn": "2023-01-01T00:00:27Z"
}
```

### WAFRulePackage

*   `id` (_string_, required)  
    Maximum length: 32. Example: `a25a9a7e9c00afc1fb2e0245519d725b`.
*   `name` (_string_, required) Name of the firewall package  
    Pattern: ^.\*$. Example: `OWASP Top 10 Protection`.
*   `description` (_string_, required) Summary of purpose/function of firewall package  
    Pattern: ^.\*$. Example: `Protection against OWASP Top 10 vulnerabilities`.
*   `detection_mode` (_string_, required) How the rules within the package are evaluated during the course of a request. When a package uses anomaly detection, each rule is given a score when triggered. If the total score of all triggered rules exceeds the sensitivity defined on the package, the action defined on the package is taken. Traditional detection decides which action to take when it is triggered by the request. If multiple rules are triggered, the action with highest protection is used. For example, a block action beats a challenge.  
    Pattern: ^.\*$. Example: `traditional`.
*   `zone_id` (_string_, required) Zone identifier with which this rule package is associated.  
    Pattern: ^.\*$. Example: `zone_1234567890abcdef`.
*   `sensitivity` (_string_, required) Sensitivity for traditional (owasp) rule package.  
    Allowed values: `low`, `medium`, `high`, `off`. Example: `medium`.
*   `action_mode` (_string_, required) The default action that is taken for rules under traditional(owasp) firewall package.  
    Allowed values: `simulate`, `challenge`, `block`. Example: `block`.

### CustomRule

A custom rule.

*   `ruleId` (_string_, required) The ID of the custom rule.  
    Pattern: ^.\*$. Example: `2c0fc9fa937b11eaa1b71c4d701ab86e`.
*   `description` (_string_, required) The description of the custom rule.  
    Pattern: ^.\*$. Example: `Block traffic for malformed URL requests.`.
*   `expression` (_string_, required) The expression that determines the custom rule's behavior.  
    Pattern: ^.\*$. Example: `(http.request.uri.path matches \"^/path1/.*\")`.
*   `actions` (_array of string_, required) The action(s) applied by the custom rule.  
    Items: Pattern: ^.\*$. Example: `block`.
    
    _Example_
    
    ```
    [
      "block"
    ]
    ```
    
*   `lastUpdated` (_string (date-time)_, required) Date when the custom rule was last updated.  
    Example: `2022-01-01T05:20:00Z`.
*   `enabled` (_boolean_, required) Whether or not the custom rule is enabled.  
    Example: `true`.

### RateLimitingRule

A rate limiting rule.

*   `ruleId` (_string_, required) The ID of the rate limiting rule.  
    Pattern: ^.\*$. Example: `2c0fc9fa937b11eaa1b71c4d701ab86e`.
*   `description` (_string_, required) The description of the rate limiting rule.  
    Pattern: ^.\*$. Example: `Rate limit /path1.`.
*   `expression` (_string_, required) The expression that defines when to evaluate the rate limiting rule.  
    Pattern: ^.\*$. Example: `(http.request.uri.path matches "^/path1/.*")`.
*   `characteristics` (_array of string_, required) Set of parameters defining how to group requests when tracking the request rate.  
    Items: Pattern: ^.\*$. Example: `cf.unique_visitor_id`.
    
    _Example_
    
    ```
    [
      "cf.unique_visitor_id"
    ]
    ```
    
*   `action` (_string_, required) The action applied by the rate limiting rule. Valid actions are "block", "managed\_challenge", "js\_challenge", "legacy\_captcha", and "log".  
    Pattern: ^.\*$. Example: `block`.
*   `period` (_integer_, required) The period of time to consider when evaluating the request rate (in seconds). Valid values are 10, 60, 120, 300, and 600.  
    Example: `60`.
*   `requestsPerPeriod` (_integer_, required) The limit for the number of requests in the specified period of time.  
    Example: `50`.
*   `mitigationTimeout` (_integer_, required) After the rate is reached, the rate limiting rule applies the rule action to further requests for the period of time defined in this field (in seconds). When set to 0, the rule throttles requests over the maximum configured rate. When greater than 0, the action is presented for the selected duration after the configured rate is exceeded. Valid values are 0, 60, 120, 300, 600, 3600, and 86400.  
    Example: `600`.
*   `countingExpression` (_string_) The expression that defines what kind of requests we want to rate limit.  
    Pattern: ^.\*$. Example: `(http.request.uri.path matches "^/path1/.*" and http.response.code eq 400)`.
*   `lastUpdated` (_string (date-time)_, required) Date when the rate limiting rule was last updated.  
    Example: `2022-01-01T05:20:00Z`.
*   `enabled` (_boolean_, required) Whether or not the rate limiting rule is enabled.  
    Example: `true`.

### WAFManagedRuleset

A WAF managed ruleset.

*   `name` (_string_, required) The name of the WAF managed ruleset.  
    Pattern: ^.\*$. Example: `OWASP Core Ruleset`.
*   `rulesetId` (_string_, required) The ID of the WAF managed ruleset.  
    Pattern: ^.\*$. Example: `4814384a9e5d4991b9815dcfc25d2f1f`.
*   `action` (_string_, required) The action applied by the WAF managed ruleset.  
    Pattern: ^.\*$. Example: `default`.
*   `anomalyScore` (_string_) The anomaly score threshold of the WAF managed ruleset. Only applicable for the OWASP Core Ruleset.  
    Pattern: ^.\*$. Example: `low`.
*   `anomalyScoreThreshold` (_integer_) The numerical value of the anomaly score threshold of the WAF managed ruleset. Only applicable for the OWASP Core Ruleset.  
    Example: `60`.
*   `paranoiaLevel` (_integer_) The paranoia level of the WAF managed ruleset. Higher paranoia levels activate more aggressive rules. Only applicable for the OWASP Core Ruleset.  
    Example: `1`.
*   `enabled` (_boolean_, required) Whether or not the WAF managed ruleset is enabled.  
    Example: `true`.

_Example_

```
{
  "name": "OWASP Core Ruleset",
  "rulesetId": "4814384a9e5d4991b9815dcfc25d2f1f",
  "action": "default",
  "anomalyScore": "low",
  "anomalyScoreThreshold": 60,
  "paranoiaLevel": 1,
  "enabled": true
}
```

### WAFManagedRule

A WAF managed rule.

*   `ruleId` (_string_, required) The ID of the WAF managed rule.  
    Pattern: ^.\*$. Example: `5de7edfa648c4d6891dc3e7f84534ffa`.
*   `action` (_string_, required) The action applied by the WAF managed rule.  
    Pattern: ^.\*$. Example: `block`.
*   `score` (_integer_) The score of the WAF managed rule. Only applicable for the OWASP Managed Ruleset.  
    Example: `5`.
*   `categories` (_array of string_, required) A list of categories describing the function of the WAF managed rule.  
    Items: Pattern: ^.\*$. Example: `broken-access-control`.
    
    _Example_
    
    ```
    [
      "broken-access-control",
      "wordpress"
    ]
    ```
    
*   `description` (_string_, required) The description of the WAF managed rule.  
    Pattern: ^.\*$. Example: `Wordpress - Broken Access Control`.
*   `lastUpdated` (_string (date-time)_, required) Date when the WAF managed rule was last updated.  
    Example: `2024-01-01T05:20:00Z`.
*   `enabled` (_boolean_, required) Whether or not the WAF managed rule is enabled.  
    Example: `true`.

_Example_

```
{
  "ruleId": "5de7edfa648c4d6891dc3e7f84534ffa",
  "action": "block",
  "score": 5,
  "categories": [
    "broken-access-control",
    "wordpress"
  ],
  "description": "Wordpress - Broken Access Control",
  "lastUpdated": "2024-01-01T05:20:00Z",
  "enabled": true
}
```

### OriginHeaderModification

An origin header modification rule.

*   `headerName` (_string_, required) The name of the header forwarded to the origin.  
    Pattern: ^.\*$. Example: `x-sfdc-access-control`.
*   `headerValue` (_string_, required) The masked value of the header forwarded to the origin.  
    Pattern: ^.\*$. Example: `****************789`.
*   `lastUpdated` (_string (date-time)_, required) Date when the rule was last updated.  
    Example: `2022-01-01T05:20:00Z`.

### CipherSuitesResponse

Cipher suites information.

*   `ciphers` (_array of string_, required) List of zone level ciphers in the suite.  
    Items: Pattern: ^.\*$. Example: `ECDHE-ECDSA-AES128-GCM-SHA256`.
    
    _Example_
    
    ```
    [
      "ECDHE-ECDSA-AES128-GCM-SHA256",
      "ECDHE-RSA-AES128-GCM-SHA256"
    ]
    ```
    
*   `cipherSuiteType` (_string_, required) Classification of the ciphers in the suite.  
    Allowed values: `Compatible`, `Modern`, `Custom`, `Legacy`. Example: `Modern`.

_Example_

```
{
  "cipherSuiteType": "Modern"
}
```

### TurnstileWidget

Cloudflare Turnstile widget details, including the shared secret.

*   `sitekey` (_string_) Unique identifier for the widget.  
    Minimum length: 1. Maximum length: 64. Pattern: ^\[A-Za-z0-9\_-\]+$. Example: `0x4AAAAAAAAbCd1eFgHiJkLm`.
*   `name` (_string_) Human-readable widget name.  
    Minimum length: 1. Maximum length: 255. Example: `checkout-widget`.
*   `mode` (_TurnstileWidgetMode_)
*   `domains` (_array of string_) Domains associated with the widget.  
    Items: Minimum length: 1. Maximum length: 253. Example: `shop.example.com`.
    
    _Example_
    
    ```
    [
      "shop.example.com",
      "www.example.com"
    ]
    ```
    
*   `bot_fight_mode` (_boolean_) Whether bot fight mode is enabled.  
    Example: `false`.
*   `region` (_string_) Widget region.  
    Minimum length: 1. Maximum length: 50. Example: `world`.
*   `offlabel` (_boolean_) Whether the widget is off-label.  
    Example: `false`.
*   `clearance_level` (_string_) Clearance level for the widget.  
    Minimum length: 1. Maximum length: 50. Example: `interactive`.
*   `created_on` (_string (date-time)_) Timestamp when the widget was created.  
    Example: `2026-01-15T12:00:00Z`.
*   `modified_on` (_string (date-time)_) Timestamp when the widget was last modified.  
    Example: `2026-02-20T08:30:00Z`.
*   `secret` (_string_) The widget shared secret. Handle with care.  
    Minimum length: 1. Maximum length: 255. Example: `0x4AAAAAAAAbCd1eFgHiJkLm_secretvalue`.

### TurnstileWidgetMode

The widget operating mode. Determines the challenge behavior.

Type: `string`.

Allowed values: `non-interactive`, `invisible`, `managed`. Example: `managed`.

### PageShieldScriptVersion

Version details for the JavaScript script.

*   `hash` (_string_) The computed hash of the analyzed script.  
    Pattern: ^.\*$. Example: `1243453456abc`.
*   `jsIntegrityScore` (_integer_) The integrity score of the JavaScript content.  
    Example: `1`.
*   `obfuscationScore` (_integer_) The obfuscation score of the JavaScript content.  
    Example: `2`.
*   `dataflowScore` (_integer_) The dataflow score of the JavaScript content.  
    Example: `1`.
*   `malwareScore` (_integer_) The malware score of the JavaScript content.  
    Example: `1`.
*   `cryptoMiningScore` (_integer_) The crypto mining score of the JavaScript content.  
    Example: `1`.
*   `mageCartScore` (_integer_) The Magecart score of the JavaScript content.  
    Example: `2`.
*   `fetchedAt` (_string (date-time)_) The timestamp of when the script was last fetched.  
    Example: `2023-01-01T00:00:00Z`.
*   `isMaliciousCode` (_boolean_, required) Indicates whether the script has been reported as malicious.  
    Example: `false`.

_Example_

```
{
  "hash": "1243453456abc",
  "jsIntegrityScore": 1,
  "obfuscationScore": 2,
  "dataflowScore": 1,
  "malwareScore": 1,
  "cryptoMiningScore": 1,
  "mageCartScore": 2,
  "fetchedAt": "2023-01-01T00:00:00Z",
  "isMaliciousCode": false
}
```

### DCVDelegationRecord

eCDN automatic renewal certificate DCV delegation records.

*   `dcvCname` (_string_) DNS CNAME for Domain Control Validation.  
    Pattern: ^.\*$. Example: `_acme-challenge.example.com`.
*   `dcvCnameValue` (_string_) DNS CNAME value for Domain Control Validation.  
    Pattern: ^.\*$. Example: `abc123def456ghi789.acme-validation.com`.

_Example_

```
{
  "dcvCname": "_acme-challenge.example.com",
  "dcvCnameValue": "abc123def456ghi789.acme-validation.com"
}
```

### MRTRuleset

An MRT ruleset. Defines a list of MRT rules that will route certain storefront requests to the managed runtime instance.

*   `id` (_string_, required) The ID of the ruleset.  
    Pattern: ^.\*$. Example: `12345678901234asdfasfasdf`.
*   `name` (_string_, required) The name of the ruleset.  
    Pattern: ^.\*$. Example: `MRT Rules`.
*   `lastUpdated` (_string (date-time)_, required) Date when the ruleset was last updated.  
    Example: `2022-01-01T05:20:00Z`.
*   `rules` (_array of MRTRules_, required) The rules defined by the ruleset.

_Example_

```
{
  "id": "12345678901234asdfasfasdf",
  "name": "MRT Rules",
  "lastUpdated": "2022-01-01T05:20:00Z",
  "rules": []
}
```

### MRTRules

A rule in an MRT ruleset.

*   `id` (_string_, required) The ID of the rule.  
    Pattern: ^.\*$. Example: `12345678901234asdfasfasdf`.
*   `expression` (_string_, required) The expression that determines the rule's routing behavior.  
    Pattern: ^.\*$. Example: `(http.host eq "dev-customer.salesforce.com" and not ( http.request.uri.path matches "^/path1/.*" or http.request.uri.path matches "^.*/path2/.*/products/.*"))`.
*   `description` (_string_) The description of the rule.  
    Pattern: ^.\*$. Example: `Phased rollout rule for dev-customer.salesforce.com`.
*   `lastUpdated` (_string (date-time)_, required) Date when the rule was last updated.  
    Example: `2022-01-01T05:20:00Z`.
*   `ref` (_string_, required) The ref of the rule.  
    Pattern: ^.\*$. Example: `12345678901234asdfasfasdf1234567`.
*   `enabled` (_boolean_, required) Whether or not the rule is enabled.  
    Example: `true`.
*   `mrtHostname` (_string_, required) Managed runtime hostname this rule targets.  
    Pattern: ^.\*$. Example: `customer-pwa-hybrid.mobify-storefront.com`.

_Example_

```
{
  "id": "12345678901234asdfasfasdf",
  "expression": "(http.host eq \"dev-customer.salesforce.com\" and not ( http.request.uri.path matches \"^/path1/.*\" or http.request.uri.path matches \"^.*/path2/.*/products/.*\"))",
  "description": "Phased rollout rule for dev-customer.salesforce.com",
  "lastUpdated": "2022-01-01T05:20:00Z",
  "ref": "12345678901234asdfasfasdf1234567",
  "enabled": true,
  "mrtHostname": "customer-pwa-hybrid.mobify-storefront.com"
}
```