zfs.resource.snapshot.release
=============================

Release hold(s) from a ZFS snapshot.

Args: data: Release parameters containing: - path: Snapshot path to release holds from (e.g., 'pool/dataset@snapshot'). - tag: Specific hold tag to release. If None, releases all holds. - recursive: Release holds from matching snapshots in child datasets.

Returns: None on success.

Raises: ValidationError: If snapshot not found or release fails.

Examples: # Release a specific hold release({"path": "tank/data@backup", "tag": "replication"})

    # Release all holds from a snapshot release({"path": "tank/data@backup"})

    # Release holds recursively release({"path": "tank@backup", "tag": "backup", "recursive": True})

.. raw:: html

    <div id="json-schema">
    <span class="badge badge-dark value-type">Type: object</span><br/>
    <div class="accordion" id="accordionCall_parameters">
    <div class="card">
    <div class="card-header" id="headingCall_parameters">
    <h2 class="mb-0">
    <button aria-controls="Call_parameters" aria-expanded="" class="btn btn-link property-name-button" data-target="#Call_parameters" data-toggle="collapse" onclick="setAnchor('#Call_parameters')" type="button"><span class="property-name">Call parameters</span></button>
    </h2>
    </div>
    <div aria-labelledby="headingCall_parameters" class="collapse property-definition-div" data-parent="#accordionCall_parameters" id="Call_parameters">
    <div class="card-body pl-5">
    <span class="badge badge-dark value-type">Type: array</span><br/>
    <span class="badge badge-info no-additional">No Additional Items</span><h4>Tuple Validation</h4>
    <h5>Parameter 1: data</h5>
    <div class="card">
    <div class="card-body items-definition" id="Call_parameters_items_i0">
    <h4>data</h4><span class="badge badge-dark value-type">Type: object</span><br/>
    <span class="description"><p>Release parameters for releasing holds on ZFS snapshots.</p>
    </span> <span class="badge badge-info no-additional">No Additional Properties</span>
    <div class="accordion" id="accordionCall_parameters_items_i0_path">
    <div class="card">
    <div class="card-header" id="headingCall_parameters_items_i0_path">
    <h2 class="mb-0">
    <button aria-controls="Call_parameters_items_i0_path" aria-expanded="" class="btn btn-link property-name-button" data-target="#Call_parameters_items_i0_path" data-toggle="collapse" onclick="setAnchor('#Call_parameters_items_i0_path')" type="button"><span class="property-name">path</span> <span class="badge badge-warning required-property">Required</span></button>
    </h2>
    </div>
    <div aria-labelledby="headingCall_parameters_items_i0_path" class="collapse property-definition-div" data-parent="#accordionCall_parameters_items_i0_path" id="Call_parameters_items_i0_path">
    <div class="card-body pl-5">
    <h4>Path</h4><span class="badge badge-dark value-type">Type: string</span><br/>
    <span class="description"><p>Snapshot path to release holds from (e.g., 'pool/dataset@snapshot').</p>
    </span>
    <p><span class="badge badge-light restriction min-length-restriction" id="Call_parameters_items_i0_path_minLength">Must be at least <code>1</code> characters long</span></p>
    </div>
    </div>
    </div>
    </div>
    <div class="accordion" id="accordionCall_parameters_items_i0_tag">
    <div class="card">
    <div class="card-header" id="headingCall_parameters_items_i0_tag">
    <h2 class="mb-0">
    <button aria-controls="Call_parameters_items_i0_tag" aria-expanded="" class="btn btn-link property-name-button" data-target="#Call_parameters_items_i0_tag" data-toggle="collapse" onclick="setAnchor('#Call_parameters_items_i0_tag')" type="button"><span class="property-name">tag</span></button>
    </h2>
    </div>
    <div aria-labelledby="headingCall_parameters_items_i0_tag" class="collapse property-definition-div" data-parent="#accordionCall_parameters_items_i0_tag" id="Call_parameters_items_i0_tag">
    <div class="card-body pl-5">
    <h4>Tag</h4> <span class="badge badge-success default-value">Default: null</span><br/>
    <span class="description"><p>Specific tag to release. If None, releases all hold tags.</p>
    </span><div class="any-of-value" id="Call_parameters_items_i0_tag_anyOf"><h2 class="handle">
    <label>Any of</label>
    </h2><ul class="nav nav-tabs" id="tabsCall_parameters_items_i0_tag_anyOf_anyOf" role="tablist"><li class="nav-item">
    <a class="nav-link active anyOf-option" data-toggle="tab" href="#tab-pane_Call_parameters_items_i0_tag_anyOf_i0" id="Call_parameters_items_i0_tag_anyOf_i0" onclick="setAnchor('#Call_parameters_items_i0_tag_anyOf_i0')" role="tab">Option 1</a>
    </li><li class="nav-item">
    <a class="nav-link anyOf-option" data-toggle="tab" href="#tab-pane_Call_parameters_items_i0_tag_anyOf_i1" id="Call_parameters_items_i0_tag_anyOf_i1" onclick="setAnchor('#Call_parameters_items_i0_tag_anyOf_i1')" role="tab">Option 2</a>
    </li></ul>
    <div class="tab-content card"><div class="tab-pane fade card-body active show" id="tab-pane_Call_parameters_items_i0_tag_anyOf_i0" role="tabpanel">
    <span class="badge badge-dark value-type">Type: string</span><br/>
    </div><div class="tab-pane fade card-body" id="tab-pane_Call_parameters_items_i0_tag_anyOf_i1" role="tabpanel">
    <span class="badge badge-dark value-type">Type: null</span><br/>
    </div></div></div>
    </div>
    </div>
    </div>
    </div>
    <div class="accordion" id="accordionCall_parameters_items_i0_recursive">
    <div class="card">
    <div class="card-header" id="headingCall_parameters_items_i0_recursive">
    <h2 class="mb-0">
    <button aria-controls="Call_parameters_items_i0_recursive" aria-expanded="" class="btn btn-link property-name-button" data-target="#Call_parameters_items_i0_recursive" data-toggle="collapse" onclick="setAnchor('#Call_parameters_items_i0_recursive')" type="button"><span class="property-name">recursive</span></button>
    </h2>
    </div>
    <div aria-labelledby="headingCall_parameters_items_i0_recursive" class="collapse property-definition-div" data-parent="#accordionCall_parameters_items_i0_recursive" id="Call_parameters_items_i0_recursive">
    <div class="card-body pl-5">
    <h4>Recursive</h4><span class="badge badge-dark value-type">Type: boolean</span> <span class="badge badge-success default-value">Default: false</span><br/>
    <span class="description"><p>Release holds recursively from matching snapshots in child datasets.</p>
    </span>
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>
    </div>
    <div class="accordion" id="accordionReturn_value">
    <div class="card">
    <div class="card-header" id="headingReturn_value">
    <h2 class="mb-0">
    <button aria-controls="Return_value" aria-expanded="" class="btn btn-link property-name-button" data-target="#Return_value" data-toggle="collapse" onclick="setAnchor('#Return_value')" type="button"><span class="property-name">Return value</span></button>
    </h2>
    </div>
    <div aria-labelledby="headingReturn_value" class="collapse property-definition-div" data-parent="#accordionReturn_value" id="Return_value">
    <div class="card-body pl-5">
    <h4>Result</h4><span class="badge badge-dark value-type">Type: null</span><br/>
    </div>
    </div>
    </div>
    </div>
    </div><br><br>

*Required roles:* SNAPSHOT_WRITE

