curl --request POST \
--url https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve \
--header 'AccessToken: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"cancellation_reason": [
"non_payment"
],
"internal_cancellation_reason": [
"<string>"
],
"cancellation_reason_broker": "<string>",
"cancel_reason_others": "<string>",
"cancellation_guard_id": 2,
"cancellation_guard_acknowledged": true,
"cancellation_guard_approval_comment": "<string>"
}
'import requests
url = "https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve"
payload = {
"cancellation_reason": ["non_payment"],
"internal_cancellation_reason": ["<string>"],
"cancellation_reason_broker": "<string>",
"cancel_reason_others": "<string>",
"cancellation_guard_id": 2,
"cancellation_guard_acknowledged": True,
"cancellation_guard_approval_comment": "<string>"
}
headers = {
"AccessToken": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {AccessToken: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cancellation_reason: ['non_payment'],
internal_cancellation_reason: ['<string>'],
cancellation_reason_broker: '<string>',
cancel_reason_others: '<string>',
cancellation_guard_id: 2,
cancellation_guard_acknowledged: true,
cancellation_guard_approval_comment: '<string>'
})
};
fetch('https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'cancellation_reason' => [
'non_payment'
],
'internal_cancellation_reason' => [
'<string>'
],
'cancellation_reason_broker' => '<string>',
'cancel_reason_others' => '<string>',
'cancellation_guard_id' => 2,
'cancellation_guard_acknowledged' => true,
'cancellation_guard_approval_comment' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"AccessToken: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve"
payload := strings.NewReader("{\n \"cancellation_reason\": [\n \"non_payment\"\n ],\n \"internal_cancellation_reason\": [\n \"<string>\"\n ],\n \"cancellation_reason_broker\": \"<string>\",\n \"cancel_reason_others\": \"<string>\",\n \"cancellation_guard_id\": 2,\n \"cancellation_guard_acknowledged\": true,\n \"cancellation_guard_approval_comment\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("AccessToken", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve")
.header("AccessToken", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"cancellation_reason\": [\n \"non_payment\"\n ],\n \"internal_cancellation_reason\": [\n \"<string>\"\n ],\n \"cancellation_reason_broker\": \"<string>\",\n \"cancel_reason_others\": \"<string>\",\n \"cancellation_guard_id\": 2,\n \"cancellation_guard_acknowledged\": true,\n \"cancellation_guard_approval_comment\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["AccessToken"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cancellation_reason\": [\n \"non_payment\"\n ],\n \"internal_cancellation_reason\": [\n \"<string>\"\n ],\n \"cancellation_reason_broker\": \"<string>\",\n \"cancel_reason_others\": \"<string>\",\n \"cancellation_guard_id\": 2,\n \"cancellation_guard_acknowledged\": true,\n \"cancellation_guard_approval_comment\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"submission_number": "<string>",
"transaction_id": 123,
"submission_status": "<string>",
"transportation_submission_id": 123,
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25",
"cancellation_notice": {
"phase": "request",
"state": "<string>",
"reason": "<string>",
"notice_minimum_required": true,
"ground": "non_payment",
"floor_days": 123,
"days_in_force": 123,
"minimum_date": "2023-12-25",
"held": true,
"hold_reason": "<string>",
"changes": {},
"date_measurements": {},
"current_dates": {
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25"
},
"enabled": true,
"historical_exempt": true,
"evaluated_at": "2023-11-07T05:31:56Z",
"stored_reason": "<string>",
"approved_reason": "<string>",
"historical_actor_id": 123,
"historical_source": "<string>",
"historical_justification": "<string>",
"preview_stale": true,
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25",
"date_role": "proposal",
"wc_action": "cancel",
"persisted_dates": {
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25"
},
"request_decision": {
"changes": {},
"notice_minimum_required": true
}
}
}{
"error": "<string>",
"errors": {},
"reason_code": "cancellation_notice_manual_review",
"cancellation_notice": {
"phase": "request",
"state": "<string>",
"reason": "<string>",
"notice_minimum_required": true,
"ground": "non_payment",
"floor_days": 123,
"days_in_force": 123,
"minimum_date": "2023-12-25",
"held": true,
"hold_reason": "<string>",
"changes": {},
"date_measurements": {},
"current_dates": {
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25"
},
"enabled": true,
"historical_exempt": true,
"evaluated_at": "2023-11-07T05:31:56Z",
"stored_reason": "<string>",
"approved_reason": "<string>",
"historical_actor_id": 123,
"historical_source": "<string>",
"historical_justification": "<string>",
"preview_stale": true,
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25",
"date_role": "proposal",
"wc_action": "cancel",
"persisted_dates": {
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25"
},
"request_decision": {
"changes": {},
"notice_minimum_required": true
}
}
}{
"error": "<string>",
"reason_code": "cancellation_notice_continuation_review",
"approval_saved": true,
"submission_number": "<string>",
"transaction_id": 123,
"transportation_submission_id": 123,
"submission_status": "<string>",
"notice_continuation": {
"id": 2,
"phase": "<string>",
"reason_code": "<string>"
},
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25",
"cancellation_notice": {
"phase": "request",
"state": "<string>",
"reason": "<string>",
"notice_minimum_required": true,
"ground": "non_payment",
"floor_days": 123,
"days_in_force": 123,
"minimum_date": "2023-12-25",
"held": true,
"hold_reason": "<string>",
"changes": {},
"date_measurements": {},
"current_dates": {
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25"
},
"enabled": true,
"historical_exempt": true,
"evaluated_at": "2023-11-07T05:31:56Z",
"stored_reason": "<string>",
"approved_reason": "<string>",
"historical_actor_id": 123,
"historical_source": "<string>",
"historical_justification": "<string>",
"preview_stale": true,
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25",
"date_role": "proposal",
"wc_action": "cancel",
"persisted_dates": {
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25"
},
"request_decision": {
"changes": {},
"notice_minimum_required": true
}
}
}Approve Cancellation
Approves a pending cancellation endorsement. An explicit external reason overrides a stored request default. When approval enforcement is enabled, PAS re-evaluates applicable cancellation dates from the approval day, recalculates final values, and holds unresolved or out-of-term dates for manual review before NOC generation. Use the top-level actual stored ISO dates and final PAS premiums for notices and lifecycle clocks. Pure whole-policy insured_broker_request cancellations have no statutory notice minimum (notice_minimum_required=false, floor_days and minimum_date null), but still validate applicable dates within the term. Legacy courtesy/carrier PDFs, emails and filing work can still occur. Mixed/unknown reasons remain conservative; partial NOC generation always applies the minimum. An intent-backed notice-handoff failure after committed approval returns HTTP 500 with approval_saved=true and notice_continuation; do not blindly retry approval. Generic error-only 500 responses do not establish that approval was saved.
curl --request POST \
--url https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve \
--header 'AccessToken: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"cancellation_reason": [
"non_payment"
],
"internal_cancellation_reason": [
"<string>"
],
"cancellation_reason_broker": "<string>",
"cancel_reason_others": "<string>",
"cancellation_guard_id": 2,
"cancellation_guard_acknowledged": true,
"cancellation_guard_approval_comment": "<string>"
}
'import requests
url = "https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve"
payload = {
"cancellation_reason": ["non_payment"],
"internal_cancellation_reason": ["<string>"],
"cancellation_reason_broker": "<string>",
"cancel_reason_others": "<string>",
"cancellation_guard_id": 2,
"cancellation_guard_acknowledged": True,
"cancellation_guard_approval_comment": "<string>"
}
headers = {
"AccessToken": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {AccessToken: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
cancellation_reason: ['non_payment'],
internal_cancellation_reason: ['<string>'],
cancellation_reason_broker: '<string>',
cancel_reason_others: '<string>',
cancellation_guard_id: 2,
cancellation_guard_acknowledged: true,
cancellation_guard_approval_comment: '<string>'
})
};
fetch('https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'cancellation_reason' => [
'non_payment'
],
'internal_cancellation_reason' => [
'<string>'
],
'cancellation_reason_broker' => '<string>',
'cancel_reason_others' => '<string>',
'cancellation_guard_id' => 2,
'cancellation_guard_acknowledged' => true,
'cancellation_guard_approval_comment' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"AccessToken: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve"
payload := strings.NewReader("{\n \"cancellation_reason\": [\n \"non_payment\"\n ],\n \"internal_cancellation_reason\": [\n \"<string>\"\n ],\n \"cancellation_reason_broker\": \"<string>\",\n \"cancel_reason_others\": \"<string>\",\n \"cancellation_guard_id\": 2,\n \"cancellation_guard_acknowledged\": true,\n \"cancellation_guard_approval_comment\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("AccessToken", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve")
.header("AccessToken", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"cancellation_reason\": [\n \"non_payment\"\n ],\n \"internal_cancellation_reason\": [\n \"<string>\"\n ],\n \"cancellation_reason_broker\": \"<string>\",\n \"cancel_reason_others\": \"<string>\",\n \"cancellation_guard_id\": 2,\n \"cancellation_guard_acknowledged\": true,\n \"cancellation_guard_approval_comment\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.coverwhale.dev/v1/submission/{displayId}/{transactionId}/cancel-approve")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["AccessToken"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"cancellation_reason\": [\n \"non_payment\"\n ],\n \"internal_cancellation_reason\": [\n \"<string>\"\n ],\n \"cancellation_reason_broker\": \"<string>\",\n \"cancel_reason_others\": \"<string>\",\n \"cancellation_guard_id\": 2,\n \"cancellation_guard_acknowledged\": true,\n \"cancellation_guard_approval_comment\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"submission_number": "<string>",
"transaction_id": 123,
"submission_status": "<string>",
"transportation_submission_id": 123,
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25",
"cancellation_notice": {
"phase": "request",
"state": "<string>",
"reason": "<string>",
"notice_minimum_required": true,
"ground": "non_payment",
"floor_days": 123,
"days_in_force": 123,
"minimum_date": "2023-12-25",
"held": true,
"hold_reason": "<string>",
"changes": {},
"date_measurements": {},
"current_dates": {
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25"
},
"enabled": true,
"historical_exempt": true,
"evaluated_at": "2023-11-07T05:31:56Z",
"stored_reason": "<string>",
"approved_reason": "<string>",
"historical_actor_id": 123,
"historical_source": "<string>",
"historical_justification": "<string>",
"preview_stale": true,
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25",
"date_role": "proposal",
"wc_action": "cancel",
"persisted_dates": {
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25"
},
"request_decision": {
"changes": {},
"notice_minimum_required": true
}
}
}{
"error": "<string>",
"errors": {},
"reason_code": "cancellation_notice_manual_review",
"cancellation_notice": {
"phase": "request",
"state": "<string>",
"reason": "<string>",
"notice_minimum_required": true,
"ground": "non_payment",
"floor_days": 123,
"days_in_force": 123,
"minimum_date": "2023-12-25",
"held": true,
"hold_reason": "<string>",
"changes": {},
"date_measurements": {},
"current_dates": {
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25"
},
"enabled": true,
"historical_exempt": true,
"evaluated_at": "2023-11-07T05:31:56Z",
"stored_reason": "<string>",
"approved_reason": "<string>",
"historical_actor_id": 123,
"historical_source": "<string>",
"historical_justification": "<string>",
"preview_stale": true,
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25",
"date_role": "proposal",
"wc_action": "cancel",
"persisted_dates": {
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25"
},
"request_decision": {
"changes": {},
"notice_minimum_required": true
}
}
}{
"error": "<string>",
"reason_code": "cancellation_notice_continuation_review",
"approval_saved": true,
"submission_number": "<string>",
"transaction_id": 123,
"transportation_submission_id": 123,
"submission_status": "<string>",
"notice_continuation": {
"id": 2,
"phase": "<string>",
"reason_code": "<string>"
},
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25",
"cancellation_notice": {
"phase": "request",
"state": "<string>",
"reason": "<string>",
"notice_minimum_required": true,
"ground": "non_payment",
"floor_days": 123,
"days_in_force": 123,
"minimum_date": "2023-12-25",
"held": true,
"hold_reason": "<string>",
"changes": {},
"date_measurements": {},
"current_dates": {
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25"
},
"enabled": true,
"historical_exempt": true,
"evaluated_at": "2023-11-07T05:31:56Z",
"stored_reason": "<string>",
"approved_reason": "<string>",
"historical_actor_id": 123,
"historical_source": "<string>",
"historical_justification": "<string>",
"preview_stale": true,
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25",
"date_role": "proposal",
"wc_action": "cancel",
"persisted_dates": {
"effective_date_transaction": "2023-12-25",
"effective_date_transaction_al": "2023-12-25",
"effective_date_transaction_wc": "2023-12-25"
},
"request_decision": {
"changes": {},
"notice_minimum_required": true
}
}
}422. With both controls
off, submit a nonempty external reason array.
Final dates at approval
When approval enforcement is enabled, PAS re-evaluates the state-and-reason minimum from the approval day before approval and NOC generation. A delayed approval can lengthen the request-time dates. PAS preserves dates already later than the minimum, validates applicable general, AL, and canceled WC dates, and recalculates the final premium values where dates change. Approved historical corrections with an attributable authorized exception retain their dates. Pure whole-policyinsured_broker_request cancellations have no statutory notice
minimum; legacy courtesy/carrier documents, emails, and filing work can still
occur. They return notice_minimum_required: false with null floor_days and minimum_date.
Applicable dates still require validation within the policy term. Mixed or
unknown reasons remain subject to the conservative notice rule; partial NOC
generation always applies the minimum.
The success response adds the actual stored ISO YYYY-MM-DD general, AL, and WC
dates and cancellation_notice metadata. wc_action identifies canceled,
retained, or not-applicable WC. Null dates require coverage context;
do not infer that coverage is absent or substitute a requested date. Keep the
request dates as provenance and use final stored dates for notices and lifecycle
clocks. Read final premiums from
Submission Details
after approval. A saved request decision or an advisory proposal is not a
substitute for the top-level stored dates.
The request and approval controls are separate and default off. Approval-time
enforcement, including replacement of the legacy missing-AL federal date
default, begins only when the approval control is enabled. See
cancellation rollout and final dates.
Holds and guarded approvals
HTTP422 with reason_code: cancellation_notice_manual_review means the dates
require manual review. For example, a minimum after expiration is held rather
than clamped to expiration. Inspect error and cancellation_notice; resolve
the hold before trying approval again.
Existing guarded-cancellation requirements still apply. A guarded approval needs
the exact cancellation_guard_id, affirmative
cancellation_guard_acknowledged, and an attributable
cancellation_guard_approval_comment. Guard authority and acknowledgement
failures can return 403 or 409 separately from notice-date holds.
Saved approval with an incomplete notice handoff
An intent-backed notice handoff can fail after approval and its guard transaction have committed. That case returns HTTP500 with
reason_code: cancellation_notice_continuation_review, approval_saved: true,
and notice_continuation containing its id, recorded phase, and specific
reason_code. The response also includes the immutable cancellation ID, current
submission status, actual stored ISO dates, and cancellation_notice metadata.
It does not contain status: success.
Preserve this receipt and contact Cover Whale for review or safe continuation
recovery. Do not blindly retry cancel-approve: the existing approval is saved,
and reapproval cannot safely repeat an uncertain filing or queue publication.
A generic error-only 500 does not establish that approval was saved; inspect
the receipt and reconcile the transaction before choosing a retry.
A successful approval response also does not establish that documents are ready,
the required print-chain handoff completed, or a notice was delivered. Execute Cancellation
can return 409 while an existing intent’s notice readiness blocks finalization.Authorizations
JWT returned as AccessToken by the /authentication endpoint (the Cognito ID token carrying the email claim). It expires after 3600 seconds.
Headers
Body
Final external cancellation reason codes. Required unless reason-aware request intake or approval enforcement is enabled and this transaction has a stored external reason. When either control is enabled, omission, null or an empty array defaults to the stored external reason; both submitted and stored reasons blank returns field-validation 422. With both controls off, submit a nonempty reason array. Explicit values override the stored default. Send an explicit reason for compatibility across rollout states.
["non_payment"]
Internal cancellation reason codes. An omitted or null value preserves the stored internal reason; an explicit nonempty reason array replaces it.
1Broker-provided cancellation reason
Free-text cancellation reason
500Exact guard identity required when this cancellation is guarded.
x >= 1Affirmative human acknowledgement required when guarded.
Attributable human approval comment required when guarded.
2000Response
Cancellation approved; this response alone does not prove notice-document readiness or delivery.
"success"
Immutable cancellation endorsement row ID. Keep it alongside transaction_id, which can be reused.
Actual persisted general cancellation date (YYYY-MM-DD). Use final approval dates for notices and lifecycle clocks.
Actual persisted AL cancellation date (YYYY-MM-DD), or null if no stored date is available. Determine applicability from coverage context.
Actual persisted WC cancellation date (YYYY-MM-DD) when wc_action is cancel; otherwise null. Determine applicability from coverage context and the decision.
Persisted notice-rule decision or request history; otherwise an advisory preview. Properties vary by phase and hold. Actual persisted dates are the top-level response fields.
Show child attributes
Show child attributes