---
# System prepended metadata

title: Coupon graphQL

---

# Coupon graphQL


# 1. get all
- not needed but just to show all fields from hygraph and explanation

```
query GetCoupons{
  coupons {
    couponId 
    type
    title // string 
    couponImage {
      url // url for the image
    }
    shortDescription // string, don't know if we need this?
    longDescription {
      html // longer description - rich text editor content
    }
    singleUse // boolean, can the coupon be used multiple times or not
    rewardLevel // string, shows what reward level belongs to
    priceSystem // float, used for calculations
    priceView // string, visual can be anything
    posReply // json, sent to code service for POS query
    feedbackFormId // hubspot js embed
  }
}

```
---

# 2. get by type

## coupon
- List behind an icon on homescreen
- Can be used **ONLY ONCE** per user
- ReceiptService will update CodeService and update that user has used this coupon 
```

query GetCouponsByType {
  coupons(where: {active: true, type: coupon}) {
    couponId
    type
    title
    couponImage {
      url
    }
    longDescription {
      html
    }
    priceView
    singleUse
    posReply
  }
}


```
---
## campaign
- List behind an icon on homescreen
- Can be used multiple times
- Since can be used multiple times ReceiptService will **NOT** update CodeService and update that user has used this coupon 
```
query GetCouponsByType {
  coupons(where: {active: true, type: campaign}) {
    couponId
    type
    title
    couponImage {
      url
    }
    longDescription {
      html
    }
    priceView
    singleUse
    posReply
  }
}

```
---
## reward
- Can be used multiple times
- No visible button or element for these, if userRewardLevel == rewardLevel send posReply to CodeService when quering for auth QRcode OTP
- Since can be used multiple times ReceiptService will **NOT** update CodeService and update that user has used this coupon 
```
query GetCouponsByType {
  coupons(where: {active: true, type: reward}) {
    couponId
    type
    rewardLevel
    singleUse
    posReply
  }
}

```

---

## task

- Only one task shown on homescreen
- user fills form that is specified in feedbackFormId field
- once user submits form >> task completed, update CodeService*
- once task is completed show next task: couponId: T1, T2, T3...

**Note:**

*ClientApp should update the CodeService that task(coupon) is "used" for this userId (needs more info from taras, what endpoint, how works...)

```
query GetCouponsByType {
  coupons(where: {active: true, type: task}) {
    couponId
    type
    title
    couponImage {
      url
    }
    longDescription {
      html
    }
    feedbackFormId
    singleUse
  }
}

```