Skip to content
Start here

Update Zone Hold

client.Zones.Holds.Edit(ctx, params) (*ZoneHold, error)
PATCH/zones/{zone_id}/hold

Update the hold_after and/or include_subdomains values on an existing zone hold. The hold is enabled if the hold_after date-time value is in the past. Existing zone holds can be removed from CDN-only zones by setting hold_after to null. Other zone hold updates cannot be made on CDN-only zones. Active holds are automatically disabled when a zone transitions to CDN-only mode.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
Accepted Permissions (at least one required)
Zone Write
ParametersExpand Collapse
params HoldEditParams
ZoneID param.Field[string]

Path param: Identifier.

maxLength32
HoldAfter param.Field[string]Optional

Body param: If hold_after is provided and future-dated, the hold will be temporarily disabled, then automatically re-enabled by the system at the time specified in this RFC3339-formatted timestamp. A past-dated hold_after value will have no effect on an existing, enabled hold. Providing an empty string will set its value to the current time. Providing null will disable the hold indefinitely.

IncludeSubdomains param.Field[bool]Optional

Body param: If true, the zone hold will extend to block any subdomain of the given zone, as well as SSL4SaaS Custom Hostnames. For example, a zone hold on a zone with the hostname ‘example.com’ and include_subdomains=true will block ‘example.com’, ‘staging.example.com’, ‘api.staging.example.com’, etc.

ReturnsExpand Collapse
type ZoneHold struct{…}
Hold boolOptional
HoldAfter stringOptional
IncludeSubdomains stringOptional

Update Zone Hold

package main

import (
  "context"
  "fmt"

  "github.com/cloudflare/cloudflare-go"
  "github.com/cloudflare/cloudflare-go/option"
  "github.com/cloudflare/cloudflare-go/zones"
)

func main() {
  client := cloudflare.NewClient(
    option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"),
  )
  zoneHold, err := client.Zones.Holds.Edit(context.TODO(), zones.HoldEditParams{
    ZoneID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"),
  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", zoneHold.Hold)
}
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "result": {
    "hold": true,
    "hold_after": "2023-01-31T15:56:36+00:00",
    "include_subdomains": "include_subdomains"
  },
  "success": true
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "result": {
    "hold": true,
    "hold_after": "2023-01-31T15:56:36+00:00",
    "include_subdomains": "include_subdomains"
  },
  "success": true
}