Objects
Every response body is one of these objects. Objects are closed: the API sends exactly these fields, and a new field is always additive. Fields marked optional may be absent; nullable fields are present with null.
AdjustResult
Section titled “AdjustResult”| Field | Type | Description |
|---|---|---|
changed | boolean | |
requested | number | |
applied | number | What actually landed; differs from requested when a negative delta is clamped at zero. |
balance_after | number or null | (nullable) |
balance | Balance |
AffiliateGroup
Section titled “AffiliateGroup”| Field | Type | Description |
|---|---|---|
id | string | |
name | string | |
commission | object or null | (nullable) |
customer_discount | object or null | (nullable) |
member_count | integer or null | (nullable) |
AffiliateGroupList
Section titled “AffiliateGroupList”| Field | Type | Description |
|---|---|---|
data | array of AffiliateGroup |
AffiliateGroupWriteResult
Section titled “AffiliateGroupWriteResult”| Field | Type | Description |
|---|---|---|
dry_run | boolean | |
group | AffiliateGroup | |
members_detached | integer | Deleting: partners who fall back to the programme’s rates. (optional) |
partner_codes_sync_failed | boolean | (optional) |
AffiliateProgramSettings
Section titled “AffiliateProgramSettings”The partner (affiliate) programme’s defaults. Partners, approvals and payouts are managed in the admin.
| Field | Type | Description |
|---|---|---|
revision | integer | |
enabled | boolean | Whether the partner programme is on. Switched in the Charm admin only. |
applications_open | boolean | Public applications open. Admin only. |
auto_approve | boolean | Applications approved without review. Admin only. |
commission | object | |
customer_discount | object | |
commission_base | object | |
holdback_days | integer | Days a commission waits before it can be paid out (refund window). |
link_attribution_window_days | integer | How long after a click an order still counts for the partner’s link. |
code_prefix | string | Partner codes start with this. |
terms_url | string or null | The partner terms page. (nullable) |
allow_self_referral | boolean | A partner earns on their own orders. |
hub_invite_after_referrals | integer | Customers are invited to become partners after this many referrals; 0 = straight away. |
hide_order_value | boolean | Partners do not see order values. |
utm | object |
AffiliateSettingsWriteResult
Section titled “AffiliateSettingsWriteResult”| Field | Type | Description |
|---|---|---|
dry_run | boolean | |
revision | integer | |
operation | string: update, none | |
diff | array of FieldChange | |
summary | string or null | (nullable) |
affiliate_settings | AffiliateProgramSettings | |
partner_codes_sync_failed | boolean | Saved, but some partner codes did not take the new buyer discount yet; the next change retries. (optional) |
AnalyticsSummary
Section titled “AnalyticsSummary”| Field | Type | Description |
|---|---|---|
window | object | |
currency_code | string or null | (nullable) |
members | object | |
points | object | |
revenue | object | |
rewards | object | |
tier_distribution | object | |
revenue_series_granularity | string: day, month | |
revenue_series | array of object | |
enrollment_series | object |
Balance
Section titled “Balance”| Field | Type | Description |
|---|---|---|
id | string | Shopify customer GID, e.g. gid://shopify/Customer/123. Accepted by every endpoint that takes a customer id, as is the numeric legacy_id. |
legacy_id | integer or null | The numeric Shopify customer id (the part after the last slash of the GID). (nullable) |
points_balance | number | |
points_earned | number | |
points_redeemed | number | |
pending_points | number |
Birthday
Section titled “Birthday”| Field | Type | Description |
|---|---|---|
month | integer or null | (nullable) |
day | integer or null | (nullable) |
BirthdayResult
Section titled “BirthdayResult”| Field | Type | Description |
|---|---|---|
changed | boolean | |
birthday | object or null | (nullable) |
Campaign
Section titled “Campaign”| Field | Type | Description |
|---|---|---|
id | string or null | Null only in a dry run of a create. (nullable) |
name | string or null | Shown on the storefront banner and in campaign emails. (nullable) |
type | string: earning_boost, reward_spotlight | |
template | string or null | (nullable) |
status | string: draft, scheduled, active, ended, cancelled | |
multiplier | number or null | Points multiplier while the campaign runs (earning_boost). (nullable) |
stacking_mode | string or null | How it combines with the VIP tier multiplier: compound, max or replace. (nullable) |
starts_at | string or null | (nullable) |
ends_at | string or null | (nullable) |
rule_types | array of string | The ways to earn it boosts. |
product_scope | object | |
audience | object | |
limits | object | |
consumed | object | |
badge_text | string or null | (nullable) |
banner_copy | object | { [language]: { title, subtitle } } for the storefront banner. |
spotlight_rewards | array of object | |
emails | object | |
deletable | boolean | Draft, ended and cancelled campaigns can be deleted; others are cancelled. |
revision | integer | Send it back as if_revision so a concurrent edit is refused instead of overwritten. |
created_at | string or null | (nullable) |
updated_at | string or null | (nullable) |
CampaignEmailPhase
Section titled “CampaignEmailPhase”| Field | Type | Description |
|---|---|---|
enabled | boolean | Whether this email goes out. Campaigns created through the API start with every phase off. |
scheduled_for | string or null | When it is due (from the window). (nullable) |
sent_at | string or null | When it went out; it never goes out twice. (nullable) |
CampaignList
Section titled “CampaignList”| Field | Type | Description |
|---|---|---|
data | array of Campaign | |
next_cursor | string or null | Pass as cursor to fetch the next page; null on the last page. (nullable) |
has_more | boolean | True when another page exists. |
CampaignWriteResult
Section titled “CampaignWriteResult”| Field | Type | Description |
|---|---|---|
dry_run | boolean | True when nothing was written. |
revision | integer | The campaign’s revision after the write (unchanged on a dry run). |
operation | string: create, update, delete, none | |
diff | array of FieldChange | |
campaign | Campaign or null | (nullable) |
would_email | object or null | (nullable) |
CanRedeem
Section titled “CanRedeem”| Field | Type | Description |
|---|---|---|
state | string: redeemable, insufficient_points, tier_required, not_started, customer_excluded | |
points_needed | integer | How many more points the customer needs (insufficient_points). (optional) |
required_tier | string | The tier that unlocks the reward (tier_required). (optional) |
starts_at | string or null | When the reward opens (not_started). (optional, nullable) |
CartEstimate
Section titled “CartEstimate”| Field | Type | Description |
|---|---|---|
enabled | boolean | False when nothing would be earned; see reason. |
reason | string or null: program_disabled, no_points_layer, customer_excluded, no_eligible_lines, nothing_earned | (nullable) |
points | integer | Total the cart would earn. |
base_points | integer | Before tier and campaign multipliers. |
bonus_points | integer | From the tier multiplier and campaigns. |
tier_multiplier | number | |
campaign_multiplier | number | |
points_per_currency | number | The order rule’s rate, points per unit of the shop currency. |
eligible_amount | number | The amount that earns, in the shop currency, after exclusions and tax handling. |
lines | array of CartEstimateLine | |
currency | string or null | (nullable) |
customer_id | string or null | The customer the estimate was priced for; null for anonymous. (nullable) |
estimate | true |
CartEstimateLine
Section titled “CartEstimateLine”| Field | Type | Description |
|---|---|---|
index | integer | Position of the line in the request. |
product_id | string | |
eligible | boolean | False when a collection, tag or product exclusion removes the line from earning. |
ChildrenResult
Section titled “ChildrenResult”| Field | Type | Description |
|---|---|---|
changed | boolean | |
children | array of Subject |
ClaimResult
Section titled “ClaimResult”| Field | Type | Description |
|---|---|---|
changed | boolean | |
rule_id | string | |
points_awarded | number | |
balance_after | number or null | (nullable) |
discount_code | string or null | When the rule rewards with a code (e.g. a birthday reward). (nullable) |
is_pending | boolean | Points held until a waiting period passes. |
Customer
Section titled “Customer”next_tier is present on GET /customers/{customer_id} only; rewards, history, program and referral only when named in include.
| Field | Type | Description |
|---|---|---|
id | string | Shopify customer GID, e.g. gid://shopify/Customer/123. Accepted by every endpoint that takes a customer id, as is the numeric legacy_id. |
legacy_id | integer or null | The numeric Shopify customer id (the part after the last slash of the GID). (nullable) |
email | string or null | (nullable) |
first_name | string or null | (nullable) |
last_name | string or null | (nullable) |
points_balance | number | Spendable points. |
points_earned | number | Lifetime points earned. |
points_redeemed | number | Lifetime points spent. |
pending_points | number | Points waiting for the return window to pass. |
tier | CustomerTier or null | (nullable) |
next_tier | NextTier or null | (optional, nullable) |
rewards | array of CustomerReward | With include=rewards. (optional) |
history | array of HistoryEntry | With include=history: the latest 10 rows. (optional) |
program | Program | (optional) |
referral | Referral or null | (optional, nullable) |
referral_code | string or null | (nullable) |
excluded_from_program | boolean | |
enrolled_at | string or null | (nullable) |
enrolled_via | string or null | (nullable) |
birthday | Birthday or null | (nullable) |
orders_count | number | |
lifetime_spend | number or null | In the shop currency. (nullable) |
last_activity_at | string or null | (nullable) |
updated_at | string or null | (nullable) |
CustomerList
Section titled “CustomerList”| Field | Type | Description |
|---|---|---|
data | array of Customer | |
next_cursor | string or null | Pass as cursor to fetch the next page; null on the last page. (nullable) |
has_more | boolean | True when another page exists. |
CustomerReward
Section titled “CustomerReward”| Field | Type | Description |
|---|---|---|
id | string or null | (nullable) |
type | string or null | (nullable) |
enabled | boolean | |
name | string or null | (nullable) |
points_cost | number or null | What this customer pays: their tier’s price when the reward has one. (nullable) |
discount_type | string or null | (nullable) |
discount_value | number or null | (nullable) |
code_valid_days | number or null | (nullable) |
title | string or null | (nullable) |
title_translations | object | |
fields | object | |
summary | string or null | (nullable) |
minimum_purchase | number or null | Order minimum for the reward’s code, in the shop currency. (nullable) |
ends_at | string or null | When the reward stops being available. (nullable) |
can_redeem | CanRedeem |
CustomerState
Section titled “CustomerState”What a customer write reports when the key lacks customers:read: state only, no personal data. Keys that also hold customers:read receive the full Customer.
| Field | Type | Description |
|---|---|---|
id | string | Shopify customer GID, e.g. gid://shopify/Customer/123. Accepted by every endpoint that takes a customer id, as is the numeric legacy_id. |
legacy_id | integer or null | The numeric Shopify customer id (the part after the last slash of the GID). (nullable) |
excluded_from_program | boolean | |
tier_id | string or null | (nullable) |
is_manual_override | boolean |
CustomerTier
Section titled “CustomerTier”| Field | Type | Description |
|---|---|---|
id | string | |
name | string or null | (nullable) |
achieved_at | string or null | (nullable) |
grace_until | string or null | (nullable) |
points_in_period | number | The evaluated qualifying total in the tier period. |
is_manual_override | boolean | |
manual_override_at | string or null | (nullable) |
CustomerWriteResult
Section titled “CustomerWriteResult”| Field | Type | Description |
|---|---|---|
changed | boolean | |
customer | Customer or CustomerState | |
previous_tier_id | string or null | (optional, nullable) |
bonus_points | number | (optional) |
DeductResult
Section titled “DeductResult”| Field | Type | Description |
|---|---|---|
changed | boolean | |
requested | number | |
applied | number | |
points_deducted | number | Same as applied. Kept for existing integrations. |
balance_after | number or null | (nullable) |
balance | Balance |
Deleted
Section titled “Deleted”| Field | Type | Description |
|---|---|---|
changed | true | |
deleted | true |
EarnResult
Section titled “EarnResult”| Field | Type | Description |
|---|---|---|
changed | boolean | False when source_ref was already awarded (a retry). |
deduplicated | boolean | Same as !changed. Kept for existing integrations. |
points_awarded | number | |
balance | Balance |
EarningRule
Section titled “EarningRule”| Field | Type | Description |
|---|---|---|
id | string or null | (nullable) |
type | string or null | (nullable) |
enabled | boolean | |
label | string or null | (nullable) |
points | number or null | Flat award, when the rule pays one. (nullable) |
points_per_currency | number or null | Points per unit of the shop currency, for order rules. (nullable) |
limit | number or null | (nullable) |
title | string or null | The merchant’s own title for the rule, when set; null means the catalog default. (nullable) |
title_translations | object | Titles in the shop’s other published languages, keyed by language code (sk, pt-br). The primary language’s title is title. |
fields | object | The rule’s configuration, keyed as GET /program/rule-types documents it and as POST /program/earn-rules accepts it. |
summary | string or null | The one-line summary the admin shows, in English, with money in the shop currency. (nullable) |
Eligibility
Section titled “Eligibility”Who earns, and on which orders and products.
| Field | Type | Description |
|---|---|---|
revision | integer | |
customer_audience | string: all, b2c_only, b2b_only | Who can earn: everyone, only retail (B2C) customers, or only B2B company customers. |
excluded_customer_tags | array of string | Customers with any of these tags never earn. |
excluded_order_tags | array of string | Orders with any of these tags earn nothing. |
excluded_product_tags | array of string | Products with any of these tags earn nothing. |
excluded_products | array of object | |
excluded_collections | array of object | |
exclude_gift_cards | boolean | |
exclude_discounted_items | boolean | Items sold below their compare-at price earn nothing. |
exclude_subscription_renewals | boolean | Recurring subscription orders earn nothing (the first order still does). |
exclude_membership_purchases | boolean | Buying a paid membership earns no points. |
opt_in | object | |
member_discounts | object | What the automatic VIP tier and membership discount may touch at checkout. Membership products and gift cards are never discounted. |
EligibilityWriteResult
Section titled “EligibilityWriteResult”| Field | Type | Description |
|---|---|---|
dry_run | boolean | |
revision | integer | |
operation | string: update, none | |
diff | array of FieldChange | |
summary | string or null | (nullable) |
eligibility | Eligibility |
EmailTemplate
Section titled “EmailTemplate”| Field | Type | Description |
|---|---|---|
type | string | The template id, e.g. points_earned. |
name | string | |
description | string or null | (nullable) |
sends_when | string or null | (nullable) |
enabled | boolean | The template’s own switch. |
sends | boolean | True when it actually goes out: the template and the shop’s global e-mail switch are both on. |
toggleable | boolean | Whether the API can switch it (campaign e-mails and the launch announcement cannot). |
EmailTemplateList
Section titled “EmailTemplateList”| Field | Type | Description |
|---|---|---|
revision | integer | |
emails_enabled | boolean | The shop’s global e-mail switch, changed in the admin only. |
data | array of EmailTemplate |
EmailTemplateWriteResult
Section titled “EmailTemplateWriteResult”| Field | Type | Description |
|---|---|---|
dry_run | boolean | |
revision | integer | |
operation | string: update, none | |
diff | array of FieldChange | |
summary | string or null | (nullable) |
email_template | EmailTemplate | |
emails_enabled | boolean | |
reach | object |
FieldChange
Section titled “FieldChange”| Field | Type | Description |
|---|---|---|
path | string | The field that changed, e.g. fixedPoints or enabled. |
before | object | The value before; null when the field did not exist. |
after | object | The value after; null when the field was removed. |
GorgiasCustomerCard
Section titled “GorgiasCustomerCard”A display card for the Gorgias sidebar: localized, human-readable strings. Fields beyond found are present only when they have a value. Build integrations on /customers/{customer_id} instead.
| Field | Type | Description |
|---|---|---|
found | boolean |
HistoryEntry
Section titled “HistoryEntry”| Field | Type | Description |
|---|---|---|
id | string | |
type | string or null | (nullable) |
points | number | Signed. |
title | string or null | The line the shopper reads in their history, in their language. (nullable) |
is_pending | boolean | |
created_at | string or null | (nullable) |
Membership
Section titled “Membership”A paid membership: a Shopify product that, once bought, grants benefits for a term.
| Field | Type | Description |
|---|---|---|
id | string | |
name | string | In the shop’s primary language. |
name_translations | object | |
enabled | boolean | On sale. Switched in the Charm admin only. |
billing_type | string: term, subscription | term: one purchase grants the benefits for term. subscription: renews every billing_interval. |
term | object | |
billing_interval | object | |
grace_days | integer | Days the benefits stay after the membership lapses. |
points_multiplier | number | Extra points while a member; 1 = none. A member who is also in a tier gets the higher of the two. |
activity_window_months | integer | The multiplier holds while the member buys at least once in this many months; 0 = always. |
inactive_points_multiplier | number | What a member’s next order earns after a gap longer than activity_window_months; the full multiplier returns from the order after. |
highlight | boolean | Shown with a Best value badge. |
show_payoff | boolean | The storefront shows when the plan pays for itself. |
product | object or null | (nullable) |
benefits | array of object | Same shape as a tier’s benefits. |
MembershipList
Section titled “MembershipList”| Field | Type | Description |
|---|---|---|
revision | integer | |
subscriptions_available | boolean | Whether auto-renewing (subscription) memberships can be created on this shop yet. |
data | array of Membership |
MembershipWriteResult
Section titled “MembershipWriteResult”| Field | Type | Description |
|---|---|---|
dry_run | boolean | |
revision | integer | |
operation | string: create, update, delete, none | |
diff | array of FieldChange | |
summary | string or null | (nullable) |
membership | Membership | |
product_created | boolean | A new draft (unpublished) product was created in Shopify for this membership. (optional) |
would_create_product | object | Dry run: the draft product a real call would create. (optional) |
product_status | string | The product’s Shopify status when it is not ACTIVE (a DRAFT product cannot be bought until published). (optional) |
gating_republish_failed | boolean | Saved, but the members-only content rules did not republish; save again to retry. (optional) |
| Field | Type | Description |
|---|---|---|
amount | number | |
currency | string or null | ISO 4217 code. (nullable) |
NextTier
Section titled “NextTier”The tier the customer reaches next and the gap to it. Null on the top tier, when tiers are off, or when the tier is pinned by hand.
| Field | Type | Description |
|---|---|---|
id | string | |
name | string or null | (nullable) |
gap | object | |
progress | object |
PetsResult
Section titled “PetsResult”| Field | Type | Description |
|---|---|---|
changed | boolean | |
pets | array of Subject |
ProductEstimate
Section titled “ProductEstimate”| Field | Type | Description |
|---|---|---|
product_id | string | |
variant_id | string or null | (nullable) |
quantity | integer | |
price | number | The unit price you sent, in the shop currency. |
currency | string or null | (nullable) |
estimate | true | |
enabled | boolean | False when nothing would be earned; see reason. |
reason | string or null: program_disabled, no_points_layer, product_excluded, customer_excluded | (nullable) |
points | integer | Total the purchase would earn. |
base_points | integer | |
bonus_points | integer | |
tier_multiplier | number | (optional) |
campaign_multiplier | number | (optional) |
customer_id | string or null | The customer the estimate was priced for; null for anonymous. (optional, nullable) |
Program
Section titled “Program”| Field | Type | Description |
|---|---|---|
enabled | boolean | |
program_name | string or null | (nullable) |
points_name | string or null | (nullable) |
points_expiry | object or null | (nullable) |
reward_expiry | object or null | (nullable) |
eligibility | object or null | (nullable) |
referral | object | |
memberships_enabled | boolean | |
tiers_enabled | boolean | |
earning_rules | array of EarningRule | |
redemption_rules | array of Reward | |
revision | integer | Counts the program’s saves. Send it as if_revision on a write so a concurrent admin edit is refused instead of overwritten. |
updated_at | string or null | (nullable) |
ProgramChange
Section titled “ProgramChange”| Field | Type | Description |
|---|---|---|
id | string | |
at | string | |
actor | object | |
operation | string: create, update, delete | |
target | object | |
diff | array of FieldChange | |
revision | integer | The program revision this change produced. |
undone_at | string or null | (nullable) |
undo_of | string or null | When this change is itself an undo: the id of the change it reverted. (nullable) |
summary | string or null | The admin’s one-line description of the change (English). (nullable) |
undoable | boolean | Whether the API may undo it: not undone yet, and not a program switch or an admin-only setting. Undo is still refused when the target changed again since. |
ProgramChangeList
Section titled “ProgramChangeList”| Field | Type | Description |
|---|---|---|
data | array of ProgramChange | |
next_cursor | string or null | Pass as cursor to fetch the next page; null on the last page. (nullable) |
has_more | boolean | True when another page exists. |
ProgramRuleType
Section titled “ProgramRuleType”| Field | Type | Description |
|---|---|---|
type | string | |
kind | string: earning, reward, benefit | |
label | string | |
description | string or null | (nullable) |
category | string or null | (nullable) |
allow_multiple | boolean | Whether the program may hold more than one rule of this type. |
fulfillment_modes | array of string | Benefit types only. (optional) |
restricted | string | Present when the API may not create, delete or switch this type (a master switch). (optional) |
fields | object | JSON Schema of the fields object this type accepts: every key, its type, range, choices and default. |
defaults | object | The fields a rule of this type gets when created without any. |
ProgramRuleTypeList
Section titled “ProgramRuleTypeList”| Field | Type | Description |
|---|---|---|
languages | object or null | (nullable) |
data | array of ProgramRuleType |
ProgramUndoResult
Section titled “ProgramUndoResult”| Field | Type | Description |
|---|---|---|
dry_run | boolean | |
revision | integer | |
operation | string: create, update, delete, none | |
diff | array of FieldChange | |
summary | string or null | (nullable) |
undone | ProgramChange |
ProgramWriteResult
Section titled “ProgramWriteResult”| Field | Type | Description |
|---|---|---|
dry_run | boolean | True when nothing was written: the diff shows what the same call without dry_run would do. |
revision | integer | The program revision after the write (unchanged on a dry run). Send it back as if_revision on the next write. |
operation | string: create, update, delete, none | |
diff | array of FieldChange | |
summary | string or null | The admin’s one-line summary of the rule after the change. (nullable) |
earning_rule | EarningRule or null | (optional, nullable) |
reward | Reward or null | (optional, nullable) |
tier | Tier or null | (optional, nullable) |
program | Program or null | (optional, nullable) |
position | integer | Tier writes: the tier’s place in the ladder, 0 = the entry tier. (optional) |
tiers_enabled | boolean | Tier writes: whether VIP tiers are live. While they are off, adding or removing a tier moves nobody. (optional) |
member_impact | TierMemberImpact or null | (optional, nullable) |
references | array of object | Removing a tier: rules and live campaigns that name it. They keep working, but their per-tier part no longer applies to anyone. (optional) |
Redemption
Section titled “Redemption”| Field | Type | Description |
|---|---|---|
changed | true | |
variant_id | string or null | The gift variant, when variant_id was sent. (nullable) |
line_attribute | object or null | (nullable) |
id | string or null | Redemption id; pass to /redemptions/{redemption_id}/reverse. (nullable) |
reward_id | string | |
reward_name | string or null | (nullable) |
quantity | number | |
points_spent | number | |
balance_after | number or null | (nullable) |
discount_code | string or null | (nullable) |
expires_at | string or null | (nullable) |
credit_amount | number or null | (nullable) |
RedemptionReversal
Section titled “RedemptionReversal”| Field | Type | Description |
|---|---|---|
changed | true | |
id | string | |
reversed | true | |
points_returned | number | |
balance_after | number or null | (nullable) |
Referral
Section titled “Referral”| Field | Type | Description |
|---|---|---|
code | string | |
link | string or null | The share link on the shop’s own domain, in the customer’s market language. (nullable) |
shares | integer | Shares recorded with POST /customers/{customer_id}/referral-shares, all channels. |
ReferralClaim
Section titled “ReferralClaim”| Field | Type | Description |
|---|---|---|
changed | boolean | True when the referral was attributed to customer_id now. |
referral_code | string | |
discount | object or null | (nullable) |
friend_rewards | object | |
cart_attribute | object | Set on the Storefront API cart so the order attributes the referral without the code. |
attributed | boolean or null | With customer_id: whether the referral is now attributed (fraud guards may refuse). Null without. (nullable) |
ReferralProgram
Section titled “ReferralProgram”The whole referral program: both sides’ rewards and conditions (the referral rule’s fields), the friend’s discount code and the code prefix.
| Field | Type | Description |
|---|---|---|
revision | integer | The program revision; send it back as if_revision. |
enabled | boolean | Whether the referral program is on. Switched in the Charm admin only. |
earning_rule | EarningRule or null | (nullable) |
friend_discount | object | |
code_prefix | object |
ReferralWriteResult
Section titled “ReferralWriteResult”| Field | Type | Description |
|---|---|---|
dry_run | boolean | True when nothing was written. |
revision | integer | The program revision after the write (unchanged on a dry run). |
operation | string: create, update, none | |
diff | array of FieldChange | |
summary | string or null | The admin’s one-line summary of the referral rule after the change. (nullable) |
referral_program | ReferralProgram | |
friend_codes_resync_failed | integer | Live friend codes that could not be updated to the new settings now; the next save retries them. (optional) |
Reward
Section titled “Reward”| Field | Type | Description |
|---|---|---|
id | string or null | (nullable) |
type | string or null | (nullable) |
enabled | boolean | |
name | string or null | (nullable) |
points_cost | number or null | (nullable) |
discount_type | string or null | (nullable) |
discount_value | number or null | (nullable) |
code_valid_days | number or null | (nullable) |
title | string or null | The merchant’s own title for the reward, when set; null means the catalog default. (nullable) |
title_translations | object | Titles in the shop’s other published languages, keyed by language code (sk, pt-br). The primary language’s title is title. |
fields | object | The reward’s configuration, keyed as GET /program/rule-types?kind=reward documents it and as POST /program/rewards accepts it. |
summary | string or null | The one-line summary the admin shows, in English, with money in the shop currency. (nullable) |
RewardList
Section titled “RewardList”| Field | Type | Description |
|---|---|---|
data | array of Reward | |
next_cursor | string or null | Pass as cursor to fetch the next page; null on the last page. (nullable) |
has_more | boolean | True when another page exists. |
SessionToken
Section titled “SessionToken”| Field | Type | Description |
|---|---|---|
token | string | chrm_st_…; send as Authorization: Bearer <token>. |
token_type | "Bearer" | |
customer_id | string | Shopify customer GID, e.g. gid://shopify/Customer/123. Accepted by every endpoint that takes a customer id, as is the numeric legacy_id. |
scopes | array of string: read, write | |
api_scopes | array of string | |
expires_in | integer | |
expires_at | string |
ShareResult
Section titled “ShareResult”| Field | Type | Description |
|---|---|---|
changed | boolean | |
channel | string |
| Field | Type | Description |
|---|---|---|
domain | string | The shop’s myshopify.com domain. |
name | string or null | (nullable) |
currency | string or null | The shop’s currency (ISO 4217). (nullable) |
plan | string or null | Charm plan. (nullable) |
program_enabled | boolean | |
program_name | string or null | (nullable) |
points_name | string or null | (nullable) |
Subject
Section titled “Subject”| Field | Type | Description |
|---|---|---|
id | string | |
name | string | |
birthday | string | YYYY-MM-DD; the year is a placeholder when none was given. |
species | string or null | Pets only. (optional, nullable) |
updated_at | string or null | (nullable) |
| Field | Type | Description |
|---|---|---|
id | string or null | (nullable) |
name | string or null | (nullable) |
handle | string or null | Stable slug used by theme code and customer tags. (nullable) |
name_translations | object | The tier’s name in the shop’s other published languages; name is the primary language. |
threshold | number or null | Points needed. For multi-criteria tiers, see criteria. (nullable) |
points_multiplier | number or null | (nullable) |
combine | string: any, all | |
criteria | array of TierCriterion | |
benefits | array of TierBenefit |
TierBenefit
Section titled “TierBenefit”| Field | Type | Description |
|---|---|---|
id | string or null | (nullable) |
type | string | |
fulfillment_mode | string | |
enabled | boolean | |
label | string or null | The merchant’s wording for the benefit, as the hub shows it. (nullable) |
label_translations | object | The label in the shop’s other published languages. |
config | object | The benefit’s configuration, keyed as GET /program/rule-types?kind=benefit documents it and as PATCH /program/tiers/{tier_id} accepts it. |
summary | string or null | (nullable) |
TierCriterion
Section titled “TierCriterion”| Field | Type | Description |
|---|---|---|
type | string: points, spend, orders, referrals, tag | |
threshold | number or null | (nullable) |
TierGiftClaim
Section titled “TierGiftClaim”| Field | Type | Description |
|---|---|---|
changed | boolean | False when the gift was already claimed; the same code comes back. |
gift_id | string | |
discount_code | string or null | (nullable) |
reward_name | string or null | (nullable) |
TierList
Section titled “TierList”| Field | Type | Description |
|---|---|---|
data | array of Tier | |
next_cursor | string or null | Pass as cursor to fetch the next page; null on the last page. (nullable) |
has_more | boolean | True when another page exists. |
enabled | boolean | Whether VIP tiers are on. |
qualification | object or null | (nullable) |
TierMemberImpact
Section titled “TierMemberImpact”What saving the tier ladder would do to members while VIP tiers are live, evaluated exactly as the recalculation will.
| Field | Type | Description |
|---|---|---|
members_evaluated | integer | Members the recalculation looks at (excluded and not-joined members are skipped). |
promoted | integer | Members who would move up a tier. |
demoted | integer | Members who would move down a tier (or start their grace period). |
replaced | integer | Members of a removed tier who would be placed in a remaining one: no promotion email, no tier gifts. |
gift_codes | integer | Tier gift codes the promotions would issue. |
gifts | array of object | |
per_tier | array of object | How many members would be in each tier after the change. |
members_in_removed_tier | integer | Removing a tier: members currently in it. (optional) |
truncated | boolean | True when the shop is too large to evaluate every member for this preview; the counts cover the first ones. |
Transaction
Section titled “Transaction”| Field | Type | Description |
|---|---|---|
id | string | |
type | string or null | earn, redeem, adjust, expire, credit, … Read points for the sign. (nullable) |
points | number | Signed. Zero-point marker rows exist. |
balance_after | number or null | (nullable) |
source | string or null | (nullable) |
source_ref | string or null | (nullable) |
description | string or null | Untranslated English snapshot; prefer title_key. (nullable) |
title_key | string or null | Localizable title key. (nullable) |
title_params | object or null | (nullable) |
discount_code | string or null | (nullable) |
order_total | Money or null | (nullable) |
credit_amount | Money or null | (nullable) |
is_pending | boolean | |
pending_until | string or null | (nullable) |
cancelled | boolean | |
created_at | string or null | (nullable) |
TransactionList
Section titled “TransactionList”| Field | Type | Description |
|---|---|---|
data | array of Transaction | |
next_cursor | string or null | Pass as cursor to fetch the next page; null on the last page. (nullable) |
has_more | boolean | True when another page exists. |
UcpBenefit
Section titled “UcpBenefit”| Field | Type | Description |
|---|---|---|
id | string | |
description | string | Display-ready text. |
UcpEarningBreakdown
Section titled “UcpEarningBreakdown”| Field | Type | Description |
|---|---|---|
id | string | base, tier_multiplier or campaigns. |
amount | integer | |
description | string | |
benefit_id | string | The tier benefit that produced this row. (optional) |
UcpLoyalty
Section titled “UcpLoyalty”Exactly the UCP loyalty extension object (UCP 2026-08-25), ready to pass through in a UCP catalog, cart or checkout response.
| Field | Type | Description |
|---|---|---|
loyalty | object | The UCP dev.ucp.common.loyalty map, keyed by the program’s reverse-domain claim id (com.myshopify.<handle>.loyalty). Empty when the buyer is not a member. |
messages | array of UcpMessage |
UcpMembership
Section titled “UcpMembership”| Field | Type | Description |
|---|---|---|
id | string | Opaque and stable per member; not the Shopify id. |
name | string | |
display_id | string | Masked, e.g. ****2345. (optional) |
tiers | array of UcpTier | (optional) |
rewards | array of UcpReward | |
provisional | boolean | Always false: the caller identified the buyer. |
UcpMessage
Section titled “UcpMessage”| Field | Type | Description |
|---|---|---|
type | string: info, warning, error | |
code | string | membership_benefit_eligible, membership_benefit_ineligible or eligibility_invalid. |
path | string | (optional) |
content | string |
UcpReward
Section titled “UcpReward”| Field | Type | Description |
|---|---|---|
currency | object | |
earning_forecast | object | (optional) |
UcpTier
Section titled “UcpTier”| Field | Type | Description |
|---|---|---|
id | string | |
name | string | |
benefits | array of UcpBenefit |
WebhookEndpoint
Section titled “WebhookEndpoint”| Field | Type | Description |
|---|---|---|
id | string | |
url | string | |
topics | array of string | |
status | string | |
created_at | string or null | (nullable) |
consecutive_failures | number | |
last_success_at | string or null | (nullable) |
last_failure_at | string or null | (nullable) |
disabled_reason | string or null | (nullable) |
api_version | string | The dated API version this endpoint’s deliveries are rendered in (Charm-Version). |
WebhookEndpointCreated
Section titled “WebhookEndpointCreated”| Field | Type | Description |
|---|---|---|
id | string | |
url | string | |
topics | array of string | |
status | string | |
created_at | string or null | (nullable) |
consecutive_failures | number | |
last_success_at | string or null | (nullable) |
last_failure_at | string or null | (nullable) |
disabled_reason | string or null | (nullable) |
api_version | string | The dated API version this endpoint’s deliveries are rendered in (Charm-Version). |
secret | string | The signing secret, shown exactly once. |
WebhookList
Section titled “WebhookList”| Field | Type | Description |
|---|---|---|
data | array of WebhookEndpoint | |
next_cursor | string or null | Pass as cursor to fetch the next page; null on the last page. (nullable) |
has_more | boolean | True when another page exists. |
webhooks | array of WebhookEndpoint | Deprecated alias of data. |