List earn campaigns
GET/openapi/2026-07/loyalty/earn-campaigns
Return campaigns where members can earn points
Request
Query Parameters
Campaign status: active or inactive. Empty returns all
Pagination cursor
Page size. Default 50, max 200
Filter by member ID. Empty returns all campaigns
Responses
- 200
OK
- application/json
- Schema
- Example
Schema
- Array [
- ]
error code
error message
data object
items object[]
Campaign list
Campaign ID
Campaign name
Event type: become_member, successful_order, enter_birthday, enter_phone_number, or share_link
Whether the campaign is active
execution_schedule object
Execution schedule rule (corresponds to vo.ExecutionScheduleRule); strongly typed
Schedule type: time_range / weekly / monthly / cycle
Effective start time, RFC3339 (empty means open-start)
Effective end time, RFC3339 (empty means open-end)
Months (effective when type=monthly), 1-12 as string
Days. weekly: 0-6 (Sun-Sat); monthly: 1-31; otherwise unused
Specific date string (e.g. yyyy-MM-dd)
member_condition object
Applicable member range; strongly typed (same schema as RedemptionCampaign)
Type: scope or expression
Scope payload when type is scope
Expression payload when type is expression
Reward points after completion
point_expire_config object
Points-expiry config for points granted by this campaign; null when not configured
Whether points expire
Expiry method: after_x_months / on_specific_date / ...
Day component of the expiry rule
Month component of the expiry rule
Whether expiry protection is enabled
Protection days
Whether to use the store global config
Full campaign rule passthrough (corresponds to vo.CampaignRule); untyped Struct
Execution priority: 0 = stackable, >0 = exclusive. optional so 0 is always emitted
Whether stackable (execution_priority == 0). optional so false is always emitted
Created time, RFC3339 string
Next-page cursor
Whether more pages exist
Returned page size
{
"code": "string",
"message": "string",
"data": {
"items": [
{
"campaign_id": "string",
"name": "string",
"event_type": "string",
"active": true,
"execution_schedule": {
"type": "string",
"effective_started_at": "string",
"effective_ended_at": "string",
"months": [
"string"
],
"days": [
"string"
],
"date": "string"
},
"member_condition": {
"type": "string",
"scope": {},
"expression": {}
},
"reward_points": 0,
"point_expire_config": {
"is_expired": true,
"expired_method": "string",
"day": 0,
"month": 0,
"protect_enabled": true,
"protect_days": 0,
"use_global_config": true
},
"campaign_rule": {},
"execution_priority": 0,
"is_cumulative": true,
"created_at": "string"
}
],
"next_cursor": "string",
"has_more": true,
"limit": 0
}
}