> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://docs.bloy.io/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# Earning Rules

### List Ways to Earn
Retrieve the list of "ways to earn" (earning rule configurations) for the shop.
`GET /rest-api/v1/earningRules`
**Query parameters**
| Name | Type | Description |
| ---- |
| `page` | int | Page number (required) |
| `pageSize` | int | Number of results per page (required, max 250) |
**Example request**
```
curl --request GET \
     --url 'https://api.bloy.io/rest-api/v1/earningRules?page=1&pageSize=20' \
     --header 'Authorization: Bearer YourApiKeyGoesHere'

```

**Example response**
```
{
  "success": true,
  "message": "OK",
  "data": [
    {
      "id": "664f1a2b3c4d5e6f7a8b9c40",
      "name": "Sign up",
      "type": "sign_up",
      "status": true,
      "earnPoint": 100
    },
    {
      "id": "664f1a2b3c4d5e6f7a8b9c41",
      "name": "Place an order",
      "type": "place_order",
      "status": true,
      "earnPoint": 1,
      "spent": 5,
      "pointsWithRewardType": "fixed",
      "pointsWithdrawalType": "cancelled",
      "applyProductOption": "all",
      "applyProducts": [],
      "applyCollections": [],
      "applyVariants": [],
      "excludeProductOption": "none",
      "excludeVariants": [],
      "excludeCollections": []
    }
  ]
}

```
> The fields returned vary depending on the earning rule's `type` (e.g. `sign_up`, `birthday`, `place_order`, `review`, `refer_friend`, `daily_visit`, `custom`, and social actions like `like_facebook`, `follow_instagram`, etc.).
---
### Check a customer's earning eligibility
Retrieve the list of "ways to earn" along with an `isEarned` status for a specific customer — meaningful for earning rules that can only be completed **once** (e.g. sign up, birthday, social follow actions, custom actions...).
`GET /rest-api/v1/earningRules/eligibility`
**Query parameters**
| Name | Type | Description |
| ---- |
| `customerIdentifier` | string | Shopify customer ID or email (required) |
| `page` | int | Page number (required) |
| `pageSize` | int | Number of results per page (required, max 250) |

**Example request**
```
curl --request GET \
     --url 'https://api.bloy.io/rest-api/v1/earningRules/eligibility?customerIdentifier=customer@example.com&page=1&pageSize=20' \
     --header 'Authorization: Bearer YourApiKeyGoesHere'

```

**Example response**
```
{
  "success": true,
  "message": "OK",
  "data": [
    {
      "id": "664f1a2b3c4d5e6f7a8b9c40",
      "name": "Sign up",
      "type": "sign_up",
      "status": true,
      "earnPoint": 100,
      "isEarned": true
    },
    {
      "id": "664f1a2b3c4d5e6f7a8b9c41",
      "name": "Place an order",
      "type": "place_order",
      "status": true,
      "earnPoint": 1,
      "spent": 5,
      "pointsWithRewardType": "fixed",
      "pointsWithdrawalType": "cancelled",
      "applyProductOption": "all",
      "applyProducts": [],
      "applyCollections": [],
      "applyVariants": [],
      "excludeProductOption": "none",
      "excludeVariants": [],
      "excludeCollections": [],
      "isEarned": false
    }
  ]
}
```
**Note: **`isEarned` is only meaningful for "one-time" earning rules (`sign_up`, `birthday`, social actions, `subscribe`, `custom`, etc.). For repeatable earning rules (e.g. `place_order`), `isEarned` always returns `false`.