publ betaReference (MCP guide)
Open publ console

publ Reference

ticket_refund_settings_get — read and prepare cancellation settings

Read the installed E00003 default cancellation policy or prepare an exact change for ticket_refund_settings_apply. This configures cancellation fees and periods; it does not execute a cancellation or refund. The workflow guide separates this installation policy from event pricing and explains current permissions and recovery.

The later pending-admission correction is documented below.

Inputs and operations

Field Required here Contract
channelCode Yes string; min length 1; max length 512; The exact channelCode selected through channel discovery. Do not supply a URL, channel numeric ID, account ID or credentials.
pAppCode Yes E00003
refundPolicyId No string; min length 1; max length 160; pattern ^[A-Za-z0-9_-]+$; Exact resource identifier returned by this operation, never a title, unrelated row ID or URL.
operation No one of: usage, rules (by kind)
operation.isUsed Yes When operation.kind is usage: boolean
operation.edits Yes When operation.kind is rules: array; min items 1; max items 100
operation.edits[].refundPolicyItemId Yes When operation.kind is rules: string; min length 1; max length 160; pattern ^[A-Za-z0-9_-]+$; Exact resource identifier returned by this operation, never a title, unrelated row ID or URL.
operation.edits[].dayBoundary No When operation.kind is rules: integer; minimum 0; maximum 14
operation.edits[].fee No When operation.kind is rules: one of: none, fixed, percentage (by kind)
operation.edits[].fee.amount Yes When operation.kind is rules and operation.edits[].fee.kind is fixed: string; pattern ^(0|[1-9]\d{0,9})(\.\d{1,2})?$
operation.edits[].fee.percent Yes When operation.kind is rules and operation.edits[].fee.kind is percentage: string; pattern ^(0|[1-9]\d{0,9})(\.\d{1,2})?$

Business IDs contain 1–160 ASCII letters, digits, underscores or hyphens. Use returned policy/rule IDs, not numeric row IDs, names or URLs. Objects are strict, and null is not omission. There are no eventId, bookingId, currency, installation, consumer, credential, URL or raw-request overrides.

The following two examples are operation fragments, not complete tool arguments. usage sets the policy's isUsed flag without editing its rows:

{"kind":"usage","isUsed":false}

rules edits 1–100 distinct existing rule IDs, with at least one of dayBoundary or fee per edit:

{"kind":"rules","edits":[{"refundPolicyItemId":"observed-rule-id","dayBoundary":6,"fee":{"kind":"percentage","percent":"12.34"}}]}

Rule edits require an enabled default policy. The purchase-time row is read-only. Omit a row or field to preserve it, except the necessary next-row boundary adjustment. There are no row creation, deletion, reorder or per-row isUsed controls.

Period and fee rules

Existing row type dayBoundary Result
TYPE_DAY_FROM_PURCHASE Not editable Its period, fee and other fields are preserved.
First TYPE_DAY_BEFORE_EVENT, with daysBeforeEventMin:9999 Integer 1–14 Set this row's maximum to boundary and the next row's maximum to boundary minus one. The 9999 sentinel stays intact.
Later TYPE_DAY_BEFORE_EVENT Integer 1–14 Set this row's minimum to boundary and the next row's maximum to boundary minus one.
TYPE_DAY_EVENT_IMMINENT Integer 0 or 1 Change this last row's minimum. No next-row change is made.

Edits are applied in observed row order, independent of the order of the edits array. The final rules must retain exactly one first purchase-time row, at least one before-event row beginning with the sentinel, and exactly one last imminent row. Explicit, ordered, nonoverlapping valid event-day ranges are required; an individually allowed boundary can still fail because it conflicts with neighboring rows. Inspect the prepared full-row request before saving.

fee.kind Input Stored meaning
none No other fee fields NONE, with amount and percentage set to zero.
fixed Positive decimal-text amount FIXED cancellation fee in the channel currency; unused percentage becomes zero.
percentage Decimal-text percent from 0 to 100 PERCENTAGE cancellation fee; 12.34 becomes ratio 0.1234, and unused amount becomes zero.

Amounts and percentages allow at most ten integer digits and two fractional digits, with no sign, grouping, exponent or unnecessary leading zeros. Runtime limits are stricter than that string shape. A percentage of zero is permitted and remains PERCENTAGE; it is not the NONE selection. Fixed zero is invalid.

KRW uses the same exact-channel minimum exceptions listed in the tier-price rules. USD fixed fees always start at 1.00, including channels whose tier-price minimum is 0.30; the tier-price USD minimum must not be reused. No fee value is an instruction for how much money to refund.

Complete read and preparation examples

Discover the installation default without preparing a mutation:

{
  "channelCode": "L2NoYW5uZWxzLzk4",
  "pAppCode": "E00003"
}

Prepare a usage change using the observed policy ID:

{
  "channelCode": "L2NoYW5uZWxzLzk4",
  "pAppCode": "E00003",
  "refundPolicyId": "refund-policy-example",
  "operation": {"kind": "usage", "isUsed": false}
}

Prepare a percentage fee on an observed editable row while preserving its period:

{
  "channelCode": "L2NoYW5uZWxzLzk4",
  "pAppCode": "E00003",
  "refundPolicyId": "refund-policy-example",
  "operation": {
    "kind": "rules",
    "edits": [
      {"refundPolicyItemId": "refund-rule-example", "fee": {"kind": "percentage", "percent": "12.34"}}
    ]
  }
}

These are illustrative targets, not observed records or authorization. The usage and rules examples are independent alternatives; rules cannot be prepared after disabling the policy until a separately prepared enable operation completes. Replace every target with current authorized observations.

Observations and result

The getter reads GET /seller/api/v3/refund-policy twice and requires matching business snapshots. The policy contains 1–100 rows in strictly increasing sortNumber order with unique numeric IDs, business IDs and sort values. Policy/row consumers and row parent IDs must agree with the installation; any returned policy currency must match the current channel. Unknown returned fields are retained, and generated insertedAt/updatedAt timestamps are excluded from business comparison. This is not an atomic snapshot.

Success returns code:TICKET_REFUND_SETTINGS, refundPolicy, revision, verificationScope and writesPerformed:false. Preparation additionally returns request, which is null for an already-equal operation. Null does not mean a save occurred. Copy refundPolicy.refundPolicyId, the preparation revision and the unchanged complete operation into apply. A discovery-only revision cannot authorize a mutation; changing any setting requires new preparation. The getter creates no job even though the shared result carries task type commerce-ticket-refund-settings.

Discovery/usage resolves the exact installation settings screen; rules resolves its cancellation-rule editor. See the destination contract. A current link does not verify a write or customer outcome.

Malformed or inconsistent policies, disabled rule editing, read-only row selection, invalid periods and changing discovery snapshots fail with TICKET_REFUND_SETTINGS_UNVERIFIED or input validation errors. Invalid fixed prices can return TICKET_REFUND_FEE_INVALID or the underlying KRW TICKET_PRICE_INVALID. Resolve current permissions and context rather than substituting another policy/app. No booking, event-specific policy copy, cancellation, customer charge, refund or actual restoration is executed or verified by this read.

Preparation and pending policy work

They correct admission to the existing cancellation-settings workflow without changing its inputs, transport or task type.

Rules and usage share one protected policy resource. A rule save replaces the full observed row set, so selecting a different refundPolicyItemId does not create an independent resource. Protection follows the verified environment/consumer/refundPolicyId in the existing task-store namespace, not a requestId, rule ID or credential version.

Get and dryRun remain observation/planning. They neither acquire a mutation claim nor resolve, release or enroll earlier pending work. A fresh revision or request:null can therefore still produce TICKET_REFUND_SETTINGS_PENDING on real apply. Matching visible values, inverse usage and selecting another rule cannot settle the original uncertain operation. See whole-policy admission and recovery.

Only original-task observation followed by durable completion can settle a registered pending effect. A missing guard entry does not prove there is no older unregistered sent journal. Pre-upgrade journals need separate rollout inspection or original-task recovery; this getter performs no automatic inventory or migration. Other grants/namespaces and manual or external changes are outside this protection. This remains configuration preparation, not cancellation, refund execution or a financial verification.