> ## 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).

# VIP

### Get the VIP program
Retrieve the shop's active VIP program, including its tiers, perks, entry rewards, and per-tier earning rules.

`GET /rest-api/v1/vip`

**Example request**
```
curl --request GET \
     --url https://api.bloy.io/rest-api/v1/vip \
     --header 'Authorization: Bearer YourApiKeyGoesHere'

```

**Example response**
```
{
  "success": true,
  "message": "OK",
  "data": [
    {
      "id": "664f1a2b3c4d5e6f7a8b9c50",
      "status": true,
      "startDate": "2025-01-01T00:00:00.000Z",
      "achieve": "points",
      "resetType": "yearly",
      "resetValue": 1,
      "demote": true,
      "tiers": [
        {
          "id": "664f1a2b3c4d5e6f7a8b9c51",
          "name": "Silver",
          "icon": "https://cdn.shopify.com/.../silver.png",
          "targetValue": 0,
          "daysLeft": null,
          "perks": [
            {
              "id": "664f1a2b3c4d5e6f7a8b9c52",
              "name": "Free shipping",
              "icon": "shipping",
              "type": "shipping",
              "discountPrefix": "BLOY-VIP"
            }
          ],
          "entryRewards": [],
          "vipEarningRules": [
            {
              "id": "664f1a2b3c4d5e6f7a8b9c41",
              "name": "Place an order",
              "earnPoint": 1,
              "spent": 5
            }
          ]
        },
        {
          "id": "664f1a2b3c4d5e6f7a8b9c53",
          "name": "Gold",
          "icon": "https://cdn.shopify.com/.../gold.png",
          "targetValue": 1000,
          "daysLeft": 200,
          "perks": [
            {
              "id": "664f1a2b3c4d5e6f7a8b9c54",
              "name": "2x points",
              "icon": "star",
              "type": "amount",
              "discountPrefix": "BLOY-VIP"
            }
          ],
          "entryRewards": [
            {
              "id": "664f1a2b3c4d5e6f7a8b9c55",
              "name": "Welcome Gold gift",
              "icon": "gift",
              "type": "free_product",
              "discountPrefix": "BLOY-VIP"
            }
          ],
          "vipEarningRules": [
            {
              "id": "664f1a2b3c4d5e6f7a8b9c41",
              "name": "Place an order",
              "earnPoint": 2,
              "spent": 5
            }
          ]
        }
      ]
    }
  ]
}

```
> If the shop has no VIP program configured or it is inactive, the API returns `"data": []` with `"message": "No VIP program found or inactive"`.
---
### Get a customer's current VIP tier

`GET /rest-api/v1/vip/tiers/customer`

**Query parameters**
| Name | Type | Description |
| ---- |
| `customerIdentifier` | string | Shopify customer ID or email (required) |

**Example request**
```
curl --request GET \
     --url 'https://api.bloy.io/rest-api/v1/vip/tiers/customer?customerIdentifier=customer@example.com' \
     --header 'Authorization: Bearer YourApiKeyGoesHere'

```

**Example response**
```
{
  "success": true,
  "message": "OK",
  "data": {
    "id": "664f1a2b3c4d5e6f7a8b9c53",
    "name": "Gold",
    "icon": "https://cdn.shopify.com/.../gold.png",
    "targetValue": 1000,
    "daysLeft": 200,
    "perks": [
      {
        "id": "664f1a2b3c4d5e6f7a8b9c54",
        "name": "2x points",
        "icon": "star",
        "type": "amount",
        "discountPrefix": "BLOY-VIP"
      }
    ],
    "entryRewards": [
      {
        "id": "664f1a2b3c4d5e6f7a8b9c55",
        "name": "Welcome Gold gift",
        "icon": "gift",
        "type": "free_product",
        "discountPrefix": "BLOY-VIP"
      }
    ],
    "vipEarningRules": [
      {
        "id": "664f1a2b3c4d5e6f7a8b9c41",
        "name": "Place an order",
        "earnPoint": 2,
        "spent": 5
      }
    ]
  }
}

```
> If the customer has not reached any VIP tier, the API returns `"data": null` with `"message": "Customer has no active tier"`.
