NewAffiliateInput
input type
Create-input for an Affiliate. The tenant is derived SERVER-SIDE; ⚠ the caption is REQUIRED at the boundary (an external promoter has no derivable name); codes normalize + grammar-gate + reserve their markers IN the create transaction; each couponId resolves live same-group; the ACTIVE bound gates kit-side.
Fields
| Field | Type | Required | Notes |
|---|---|---|---|
caption | String | no | Optional: when omitted the per-type default applies — NONE — the divergence: an external promoter has no derivable default name, so an omitted caption refuses VALIDATION/INVALID at the boundary instead of defaulting; when supplied it must be non-blank. |
organizationIds | ID [ID!] | no | The canned-pool selection — ABSENT = every org in the group. |
codes | AffiliateCodeInput [AffiliateCodeInput!] | no | ≤ 8 referral codes — normalized server-side; unique in-affiliate post-normalization; each reserves the org-group marker (CONFLICT/REFERRAL_CODE_TAKEN names a live holder). |
ratePpm | Int | no | The flat order-net rate (ppm) — ABSENT = tracking-only. |
consumerId | ID | no | The shopper link — live-gated (in-tenant + NOT-doomed Consumer). |
handle | String | no | The public handle (1..64; NOT unique — ruling). |
bio | String | no | ≤2000. |
socialLinks | String [String!] | no | ≤8 url-ish strings. |
audienceSize | Int | no | ≥0 (informational). |
nicheTags | String [String!] | no | ≤16 plain strings (NOT Tag refs). |