AlmondTill/G3N API

CsCase

object type

A CsCase — ONE customer-support interaction (org-group-parented document; guest- OR Consumer-capable): the FSM head of a visibility-split CaseMessage thread. caseType ∈ {return_request, refund_inquiry, product_issue, complaint, general_inquiry, warranty_claim, shipping_issue, order_change, other} (canned + AT-extensible — the ContactRole registry class, never merchant free-form; MUTABLE via update, triage correction is routine CS — ruling). NO description field (ruling — the opening MESSAGE carries the narrative: one spine, zero duplicate state). origin is SERVER-STAMPED by lane (ruling — storefront = the consumer portal · staff = every staff create; IMMUTABLE, param-less). Refs are ref-ONLY (SPEC_CATALOG @375 — 'refs, not gate': validated in-tenant + non-doomed at write, but NO doom arms grow on the referenced constructs and consumer ERASE does NOT cascade here — cases are the MERCHANT's business records [ruling]; PII scrub =). consumerId/linkedFromCaseId/origin are IMMUTABLE at birth (rulings // — the edit face omits them; the CASEBOOK derived-index row a consumer-ref'd case mints in its create txn is thereby write-once). FSM: open(i) → in_progress ⇄ pending_customer (a consumer reply AUTO-RESUMES — the addMyCaseMessage engine fires caller_op:resume in the SAME commit) · in_progress ⇄ escalated · in_progress → resolved → closed (terminal ▣ immutable — REOPEN AFTER CLOSE = a NEW case linked via linkedFromCaseId, CLOSED-only [ruling]) · open|in_progress → cancelled (terminal ✦ doomed — spam/duplicate/withdrawn; drops from listings). resolved→closed also carries the DORMANT system:auto_close twin (its producer = the SLA machinery / policy build — parity-with-spec over trigger-pruning, ruling). resolve REQUIRES the typed resolution block PRESENT (the KIT gate — ruling, STRICT; deliberately NOT FSM data). priority/assignedTo/slaDueAt are MANUAL (the routing/SLA build populates them). The cs event domain's FIRST live producer (at.cs.case.* — ruling). NOT searchable (the book law covers WHO, not interactions).

Fields

FieldTypeNotes
idID ID!The record’s id — a UUID the platform assigned when the record was created; every reference to this record uses it.
sysIdString String!The group-scoped human-facing system id (CS-…).
typeString String!The kind of record — always CsCase here.
captionString String!The record’s display name — what people see it called.
statusString String!The FSM state: open | in_progress | pending_customer | escalated | resolved | closed | cancelled.
parentIdID ID!The parent org group; for a CsCase parentId === rootId.
rootIdID ID!The org-group family root.
createdAtString String!When the record was created, as a UTC timestamp.
updatedAtString String!When the record last changed, as a UTC timestamp.
revisionNumInt Int!How many times this record has been edited; the first save is 0.
revisionID ID!The OCC revision token — supply it on every mutation of this record; rotates on every write.
refCaptionsRefCaption [RefCaption!]!The server-composed captions of this record's declared references (the referenced-caption rule) — one row per referenced id; see RefCaption.
caseTypeString String!return_request | refund_inquiry | product_issue | complaint | general_inquiry | warranty_claim | shipping_issue | order_change | other — the canned registry (AT-extensible, never merchant free-form). MUTABLE via update (ruling — triage correction).
priorityString String!low | normal | high | urgent — kit-stamped 'normal' when the caller names none; manual.
originString String!storefront | staff — WHERE the case originated, SERVER-STAMPED by lane (ruling; param-less). IMMUTABLE.
consumerIdIDThe registered Consumer this case is FOR (absent = a guest case). ⚠ IMMUTABLE at birth (ruling — the CASEBOOK index row is write-once; guest→consumer linking = deferral 9). Ref-only: consumer erase does NOT cascade here (ruling).
organizationIdIDThe acted-upon Organization — ref-only, in-tenant + non-doomed at set.
orderIdIDThe disputed/acted-upon Order — ref-only (@375: no doom arm grows on it).
appointmentIdIDThe related Appointment — ref-only (the deferral 11, RESOLVED at the landing).
returnIdIDThe related Return — ref-only.
fulfillmentIdIDThe related Fulfillment — ref-only.
paymentIdIDThe related Payment — ref-only.
warrantyIdIDThe Warranty a claim was filed against — stamped by fileClaimWarranty in the same transaction as the warranty’s claimed flip; never caller-typed. Ref-only.
linkedFromCaseIdIDThe CLOSED case this one REOPENS (ruling — validated closed-EXACTLY at create; cancelled is NOT reopenable-by-link). IMMUTABLE at birth; the reopen provenance edge.
assignedToIDThe assigned agent — an User (in-tenant + ACTIVE at set); teams/queues = (deferral 1).
slaDueAtStringThe SLA due instant (ISO-8601) — MANUAL; / populates by policy (deferral 1; the dormant system:auto_close consumes it then).
resolutionCaseResolutionThe typed resolution block (ruling) — set via update BEFORE resolve fires. Per-kind ref law: info_only ref-LESS; every other kind names its resolving construct.
supportBillingCaseSupportBillingSTAFF lanes only: the consumer lanes (myCase/myCases) REDACT it structurally (the ruling- visibility law at the field axis — platform billing is the MERCHANT’s business).

Used by