NewExemptionCertificateInput
input type
Create-input to CAPTURE an ExemptionCertificate. The tenant (org group) is derived SERVER-SIDE from the principal; every scoped jurisdiction is a SHARED-canonical ref — each must EXIST and be ACTIVE (CONFLICT/REF_STATE naming the first non-live one), deliberately NOT tenant-scoped; categories validate against the canned TaxCategory registry; the capture is immutable except caption/code/docRef — correct by revoke + re-capture.
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
caption | String | no | Optional: when omitted the per-type default applies — the capture coordinate ('<certType> cert <certificateNumber> — <holderName>'); when supplied it must be non-blank. |
certType | ExemptionCertType ExemptionCertType! | yes | No further notes. |
certificateNumber | String String! | yes | The issuer's certificate number (non-blank; STRICT). |
holderName | String String! | yes | The certificate holder, captured inline (customer-linked). |
jurisdictionIds | ID [ID!]! | yes | The covered jurisdictions (1..25; shared-canonical refs — each exists + ACTIVE). |
categoryIds | TaxCategory [TaxCategory!] | no | The covered categories — ABSENT = all (the blanket-cert shape); supplied lists are non-empty. |
expiresAt | String | no | Optional expiry (UTC ISO-8601) — ABSENT = non-expiring. |
docRef | String | no | No further notes. |
orgCustomerId | ID | no | The holder OrgCustomer — in-tenant + NON-doomed at set. |
code | String | no | No further notes. |