Cache-Control: no-store after
inherited authentication, account and trial callbacks. The receipt controller
prepends no-store before authentication, so its refusals also carry it.
All six operations reject a request that supplies more than one account API
credential type with HTTP 400 and
error.code: multiple_credentials, before the
action runs.
All six operations inherit the account API impersonation guard. Alongside the
ordinary authentication and role errors, a request can return 403 with
error.code set to impersonation_read_only, impersonation_wrong_account or
impersonation_blocked_action; an ended session can return 401 with
error.code set to impersonation_ended.
Quality review metadata
The queue requires the exactquality_review_queue_read deployment switch to be
on and an administrator role. It is independent of the
orchestration_studio account feature. The response includes only item id,
reason, flagged_at and source_current; it does not return customer evidence,
a verdict or a golden case.
The only accepted query parameters are reason, limit and cursor. The
reason must be verifier_uncertain or negative_csat. The limit defaults to 50
and is capped at 100. A cursor is signed and bound to the account and reason
filter; an invalid cursor or other parameter returns 422. Queue items whose
source is no longer current are omitted.
Manual work state
The work-state operations require both the queue-read andquality_review_queue_work deployment switches to be on, plus an
administrator role. This resource coordinates assignment and a worked marker;
it does not create a quality verdict, edit a golden case or adjudicate a bill.
GET takes no query or body parameters. PATCH requires a JSON object at the
request root and no query parameters. Send lock_version and at least one of
assigned_user_id or worked. assigned_user_id is an account member’s user
id or null to clear the assignment; worked must be a JSON boolean. A stale
version returns 409 stale_version; invalid fields return 422
invalid_parameters. The successful response contains the current item id,
assignee, worked flag and lock version.
Resolution receipt
Receipt reads requirebilling_resolution_receipts_api_enabled to be exactly
on. Administrators receive the full receipt. If the separate
billing_receipt_restricted_view_enabled switch is exactly on, another
genuine account member may receive a restricted receipt. That view omits
credits, billed_despite_exclusion and ledgers; without that switch a
non-administrator receives 403. These gates are separate.
The reference must be nonempty, at most 255 UTF-8 bytes, and contain no control
characters, colon, slash or backslash. Lookup is scoped to the URL account; a
missing or foreign reference returns 404. The full receipt separates trigger,
confirmation, class, credit, exclusion and dispute evidence. A bounded
correction-chain read can return 503 receipt_unavailable; an unexpected
read failure returns 500 internal_error. Both have a nested retryable error
object. The controller omits raw verification evidence and resolves receipts
only within the URL account.
When billing_resolution_ledgers_enabled is exactly on, a full administrator
view may include separate fee and language-model cost ledgers. The key is
omitted when the switch is off and from restricted views. It is not a combined
total, margin or invoice-finality guarantee. The receipt documents evidence
for one resolution and does not assert that an invoice is final.
The fee ledger can return stored settlement pricing provenance when applied
credits still match the original receipt draw. Known fields include resolution
class, modifiers, rate source and disposition, with settled price and rate
identity when present. Historical stored metadata can also include other keys.
Resolution confirmation settings
Both settings operations require the account’sresolution_confirmation
feature and an administrator role. They do not inherit the Studio feature
gate. GET returns the current customer_yes_ask, human_marked_no_return,
quiet_days, window_days and nullable ask_text, plus read-only
reopen_window_days and effective flags. Effective ask behavior also depends on
the global switches and service hold ceilings. human_marked_no_return is
stored, but has no current consumer.
PATCH accepts a JSON object at the root with no query parameters. It must
contain at least one writable key. Boolean settings require JSON booleans;
window_days is an integer from 1 through 30; ask_text is null or valid text
up to 200 characters. Unknown keys, read-only fields, wrong types and invalid
values return 422 invalid_params. Changes are merged under the account lock
and audited once per changed field with the authenticated actor. Unchanged
values are no-ops, and invalid requests leave settings and audit rows
unchanged.
Requested action inventory
The following requested actions are currently missing or only partly represented by the six operations above. Missing actions belong to ENG-5897 and are not runtime acceptance for this contract.
The internal dated inventory records unapproved scopes and event proposals,
with MCP hidden and SDK exposure excluded pending review. Proposed events are
not delivered events. The three existing
moves_money operations remain
unchanged.
The issue’s proposed administrator-or-billing receipt role is not current
behavior. The current restricted account-member view is documented above; a
different role boundary remains a gap. API scopes, delivered webhook events,
MCP exposure and SDK exposure remain unapproved or pending review.