# Hung Fook Tong Demo API Document
# Get record
| Item | Description |
| -------- | -------- |
| net suite API | https://tstdrv2641016.suitetalk.api.netsuite.com/services/rest/query/v1/suiteql?limit=5 |
| Contact |{ "q": "SELECT * FROM contact where id=3113"} |
| Membership |{ "q": "SELECT * FROM customrecord_acws_membership where id = 001000"} |
| Spending |{"q": "SELECT * FROM customrecord_acws_spending where custrecord_acws_member = 001000"}|
| Point Transaction |{ "q": "SELECT * FROM customrecord_acws_pointtransaction where custrecord_acws_pointtransaction_member = 001000"} |
# **Reward List**
**Description:**
- Select top 5 rewards by last modified date
**URL:**
-https://tstdrv2641016.suitetalk.api.netsuite.com/services/rest/query/v1/suiteql?limit=5
**Method:**
- POST
**Request:**
```jsonld
{
"q": "select * from customrecord_acws_reward order by lastmodified desc"
}
```
**Response:**
```json
{
"links": [],
"created": "03/10/2022",
"custrecord_acws_reward_category": "3",
"custrecord_acws_reward_code": "LM20180520",
"custrecord_acws_reward_currency": "6",
"custrecord_acws_reward_displayinapps": "F",
"custrecord_acws_reward_displayinconierge": "F",
"custrecord_acws_reward_facevalue": "300000",
"custrecord_acws_reward_hasmemberquota": "F",
"custrecord_acws_reward_loyaltyprogram": "1",
"custrecord_acws_reward_name_sc": "GURUS - Dyson ????????????",
"custrecord_acws_reward_name_tc": "GURUS - Dyson ????????????",
"custrecord_acws_reward_padding": "F",
"custrecord_acws_reward_pointsrequired": "7500",
"custrecord_acws_reward_redemptioneddate": "30/04/2023",
"custrecord_acws_reward_redemptionstdate": "01/05/2022",
"custrecord_acws_reward_rewardname": "GURUS - Dyson Hand and Hair Care Kit",
"custrecord_acws_reward_shortdes_en": "GURUS - Dyson Hand and Hair Care Kit",
"custrecord_acws_reward_type": "2",
"id": "116",
"isinactive": "F",
"lastmodified": "03/10/2022",
"name": "0000000116",
"owner": "-5",
"scriptid": "VAL_115062_T2641016_824"
}
```
# **Wallet (Redemption Transaction)**
**Description:**
- Select Voucher Filter:Available, Used, Expired
**URL:**
-https://tstdrv2641016.suitetalk.api.netsuite.com/services/rest/query/v1/suiteql?limit=5
**Method:**
- POST
**Request:**
Available
```jsonld
{
"q": "select * from customrecord_acws_voucher where custrecord_acws_voucher_txstatus=2"
}
```
Used
```jsonld
{
"q": "select * from customrecord_acws_voucher where custrecord_acws_voucher_txstatus=3"
}
```
Expired
```jsonld
{
"q": "select * from customrecord_acws_voucher where custrecord_acws_voucher_txstatus=4"
}
```
**Response:**
```json
{
"links": [],
"created": "10/01/2023",
"custrecord_acws_voucher_dynamicscode": "KJJDK9888",
"custrecord_acws_voucher_facevalue": "100",
"custrecord_acws_voucher_format": "2",
"custrecord_acws_voucher_membership": "1000",
"custrecord_acws_voucher_reward": "101",
"custrecord_acws_voucher_transactionid": "0001",
"custrecord_acws_voucher_txstatus": "4",
"custrecord_acws_voucher_voucherno": "VOU10000001",
"id": "101",
"isinactive": "F",
"lastmodified": "10/01/2023",
"name": "VCH0000000101",
"owner": "3110",
"scriptid": "VAL_117352_T2641016_764"
}
```
# Post Redeem
**Description:**
Post Redeem on Reward page
**URL:**
https://tstdrv2641016.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=1087&deploy=1
**Method:**
- POST
**Request:**
| Field | Description| Required |
| -------- | -------- |----------|
| recordtype | `customrecord_acws_voucher` | Y |
| custrecord_acws_voucher_reward | - | Y |
| custrecord_acws_voucher_membership | - | Y |
```json
{
"recordtype":"customrecord_acws_voucher",
"custrecord_acws_voucher_reward": "0000000113",
"custrecord_acws_voucher_membership":"001005"
}
```
**Response**
```json
{
"id": 183
}
```
# Social Messages
**Description:**
- Create Social Messages on Netsuite
**URL:**
- https://tstdrv2641016.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=1085&deploy=1
- https://netsuitemiddleware.azurewebsites.net/api/socialmessage?code=VY1k0Gnghd9HpyYt9QiCkauWQ_HXoWXGlJ8bYIMKZtHRAzFu1G9n2Q==
**Method:**
- POST
**Request:**
```json
{
"recordtype":"customrecord_acws_socialmessages",
"name":"Hello ! Messages from Whats App",
"custrecord_acws_sm_contact": "3141",
"custrecord_acws_sm_channel": "1",
"custrecord_acws_smz_socialprofile": "1",
"custrecord_acws_sm_type": "1",
"custrecord_acws_sm_direction": "1"
}
```
**Response**
```json
{
"socialMessages": 3
}
```
# Generic Insert
**Description:**
Generic Insert for any netsuite recordtype
**url:**
https://tstdrv2641016.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=1089&deploy=1
**Method:**
- Post
**Request:**
| Field | Required |
| -------- | ----------|
| recordtype| Y |
| fieldname | Y |
| Field Type | Description|
| -------- | -------- |
| Date | "11/30/2022" < include "/" |
| Boolean | true ,false |
**Request:**
```jsonld
{
{
"recordtype":"customrecord_acws_spending",
"custrecord_acws_invoiceno":"inv-28112022",
"custrecord_acws_loyaltyamount":"1500",
"custrecord_acws_invoicedate":"11/30/2022",
"custrecord_acws_netamount":1000,
"custrecord_acws_nopointoffer":true
}
}
```
**Response**
```jsonld
{
"Id": 257
}
```
# Create Contact with Membership
**Description:**
Create Contact with Membership
**url:**
https://tstdrv2641016.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=1141&deploy=1
**Method:**
- Post
**Request:**
| Field | Required |
| -------- | ----------|
| recordtype| Y |
| firstname | Y |
| subsidiary | Y |
**Request:**
```jsonld
{
"recordtype":"contact",
"firstname":"Black Moon Ltd : Nana Cheung",
"subsidiary":8
}
```
**Response**
```jsonld
{
"Id": 3864
}
```
# Update Voucher Status
**Description:**
Update Voucher Status
**url:**
https://tstdrv2641016.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=1088&deploy=1
**Method:**
- PUT
**Request:**
| Field | Description| Required |
| -------- | -------- |----------|
| recordtype | `customrecord_acws_voucher` | Y |
| id | key | Y |
| name | key | Y |
| custrecord_acws_voucher_txstatus | check below mapping | Y |
| value | custrecord_acws_voucher_txstatus|
| -------- | -------- |
| 1 | Not Assigned |
| 2 | Active |
| 3 | Used |
| 4 | Expired |
| 5 | Void |
| 6 | Hold |
**Request:**
```jsonld
{
"recordtype":"customrecord_acws_voucher",
"id":"101",
"name":"VCH0000000101",
"custrecord_acws_voucher_txstatus":"2"
}
```
**Response**
```jsonld
{
"voucherId": 101
}
```
# **Spending + Point**
**Description:**
- Create Spending + Point
**url:**
https://tstdrv2641016.restlets.api.netsuite.com/app/site/hosting/restlet.nl?script=1084&deploy=1
**Request:**
```json
{
"recordtype":"customrecord_acws_spending",
"custrecord_acws_invoiceno":"inv-28/11/2022",
"custrecord_acws_loyaltyamount":"1500",
"custrecord_acws_invoicedate":"11/30/2022",
"custrecord_acws_nopointoffer":"",
"custrecord_acws_member":"001001",
"custrecord_acws_netamount":1000
}
```
**Response**
```json
{
"links": [
{
"rel": "self",
"href": "https://tstdrv2641016.suitetalk.api.netsuite.com/services/rest/query/v1/suiteql?limit=5"
}
],
"count": 1,
"hasMore": false,
"items": [
{
"links": [],
"created": "29/08/2022",
"custrecord_acws_contact": "3113",
"custrecord_acws_enddate": "30/04/2023",
"custrecord_acws_loyaltyprogram": "1",
"custrecord_acws_memberstatus": "2",
"custrecord_acws_membertype": "1",
"custrecord_acws_startdate": "01/05/2022",
"custrecord_acws_tier": "1",
"id": "1000",
"isinactive": "F",
"lastmodified": "30/09/2022",
"name": "001000",
"owner": "-5",
"scriptid": "VAL_114701_T2641016_990"
}
],
"offset": 0,
"totalResults": 1
}
```
------
### Function app version
| Name | Value | Description |
| -------- | -------- | -------- |
| url | https://netsuitemiddleware.azurewebsites.net | Text |
| code | `PDo7KwJu15pSQV21VQhoHXzwPbbnPlPRTwgpU_v-HaqKAzFu9H-4Uw%3D%3D` or `VY1k0Gnghd9HpyYt9QiCkauWQ_HXoWXGlJ8bYIMKZtHRAzFu1G9n2Q==` | Text |
| endpoint | contact | Text |
| sample url | https://netsuitemiddleware.azurewebsites.net/api/contact?code=PDo7KwJu15pSQV21VQhoHXzwPbbnPlPRTwgpU_v-HaqKAzFu9H-4Uw%3D%3D | Text |
| proxy | https://shiny-poetry-28e5.simonlkch.workers.dev | solve CORS |
| proxy sample url | https://shiny-poetry-28e5.simonlkch.workers.dev/?https://netsuitemiddleware.azurewebsites.net/api/contact?code=VY1k0Gnghd9HpyYt9QiCkauWQ_HXoWXGlJ8bYIMKZtHRAzFu1G9n2Q== | `proxy`/?`url` `endpoint`?code=`code` |
### All endpoint
| Endpoint | Method | Description |
| -------- | -------- | -------- |
| contact | GET | query record |
| member | GET | query record |
| pointtransaction | GET | query record |
| spending | GET | query record |
| reward | GET | query record |
| voucher | GET | query record |
| spending | POST | create spending with point transaction |
| socialmessage | POST | create record |
| voucher | POST | redeem reward |
| voucher | PUT | use voucher |
### Query record filter
- Header
| endpoint | field name | Description |
| -------- | -------- | -------- |
| contact | contactId | optional |
| member | memberId | optional |
| pointtransaction | memberId | optional |
| spending | memberId | optional |
| reward | - | no need filter |
| voucher | txStatus | optional, Available = 2, Used = 3, Expired = 4 |
# Web Loyalty
## create record
**Description:**
create record
- there have two way to create record
- with key_id, and the field need to include key_id
- will find record with key_id, if found, dont create
- with out key_id
**url:**
/api/{tablename}
**Method:**
- POST
**Request:**
| Field | Description| Required |
| -------- | -------- |----------|
| key_id | -------- | N |
**Request:**
- with key_id
```jsonld
{
"key_id": "id",
"id":"101",
"name":"VCH0000000101",
"custrecord_acws_voucher_txstatus":"2"
}
```
- with out key_id
```jsonld
{
"id":"101",
"name":"VCH0000000101",
"custrecord_acws_voucher_txstatus":"2"
}
```
**Response**
```jsonld
{
"replyText": "OK",
"replyCode": 200,
"data": {
"id": 1503
}
}
```
## update record
**Description:**
update record
**url:**
/api/{tablename}
**Method:**
- PUT
**Request:**
| Field | Description| Required |
| -------- | -------- |----------|
**Request:**
```jsonld
{
"key_id": "id",
"id":"101",
"name":"VCH0000000101",
"custrecord_acws_voucher_txstatus":"2"
}
```
**Response**
```jsonld
{
"id": 101
}
```
## query record
**Description:**
query record
**url:**
/api/{tablename}/getdata
**Method:**
- POST
**Request:**
| Field | Description| Required |
| -------- | -------- |----------|
|*|get all record|-|
**Request:**
```jsonld
// get all record
{
"key_id": ["custrecord_acws_member"],
"key_operator": ["="],
"keyValues": ["001002"],
"fields": ["*"],
"page_no": 1,
"page_size": 10
}
// /customrecord_acws_spending/getdata
{
"key_id": ["custrecord_acws_member"],
"key_operator": ["="],
"keyValues": ["001002"],
"fields": ["custrecord_acws_affiliatespending","custrecord_acws_invoicedate"],
"page_no": 1,
"page_size": 10
}
```
**Response**
```jsonld
{
"replyText": "OK",
"replyCode": 200,
"data": [
{
"links": [],
"custrecord_acws_affiliatespending": "F",
"custrecord_acws_invoicedate": "30/11/2022"
},
{
"links": [],
"custrecord_acws_affiliatespending": "F",
"custrecord_acws_invoicedate": "30/11/2022"
},
{
"links": [],
"custrecord_acws_affiliatespending": "F",
"custrecord_acws_invoicedate": "30/11/2022"
}
]
}
```
## Check mapping
**Description:**
query record
**url:**
/api/cust/getMapping
**Method:**
- POST/GET
**Response**
```jsonld
{
"replyText": "OK",
"replyCode": 200,
"mappings": {
"contact": {
"custentity_acws_personalid": "personalId",
"firstname": "firstName",
"lastName": "lastName",
"entityid": "fullName",
"custentity_awcs_chinesename": "chineseName",
"custentity_awcs_nickname": "nickname",
"custentity_acws_contactgender": "gender",
"custentity_awcs_contactagegroup": "ageGroup",
"custentity_awcs_monthofbirth": "monthOfBirth",
"custentity_awcs_dayofbirth": "dayOfBirth",
"custentity_awcs_yearofbirth": "yearOfBirth",
"email": "email",
"custentity_acws_zipcode": "zipCode",
"custentity_acws_contactcountry": "country",
"custentity_awcs_accepttc": "acceptTerms&Conditions",
"custentity_acws_allowsms": "marketingViaSMS",
"custentity_acws_allowemail": "marketingViaEmail"
},
"customrecord_acws_membership": {
"name": "memberId",
"custrecord_acws_contact": "contactId",
"custrecord_acws_membernumber": "profileId",
"custrecord_acws_loyaltyprogram": "loyaltyProgram",
"custrecord_acws_tier": "tier",
"custrecord_acws_pointtonexttier": "pointsToNextTier",
"custrecord_acws_pointavailable": "pointsAvailable",
"custrecord_acws_renewaldate": "dateOfRenewal",
"custrecord_acws_memberstatus": "memberStatus",
"custrecord_acws_pointbalance": "currentPointsBalance",
"custrecord_acws_accumulatedspendingup": "accumulatedSpending",
"custrecord_acws_accumulatedpoint": "accumulatedPoints",
"custrecord_acws_spendingtoupgrade": "spendingToNextTier",
"custrecord_acws_pointtorenewal": "pointToRenew",
"custrecord_acws_spendingtorenewal": "spendingToRenew",
"custrecord_acws_startdate": "startDate",
"custrecord_acws_enddate": "expiryDate",
"custrecord_acws_hidepointbalance": "hidePointBal",
"custrecord_acws_memberno": "memberNo"
},
"customrecord_acws_reward": {
"custrecord_acws_reward_loyaltyprogram": "loyalProgramView",
"custrecord_acws_rewardtier": "tierView",
"name": "couponIdView",
"custrecord_acws_reward_code": "couponCodeView",
"custrecord_acws_reward_category": "categoryView",
"custrecord_acws_reward_pictureurl": "rewardPhotoURLView",
"custrecord_acws_reward_redemptionstdate": "startDateView",
"custrecord_acws_reward_redemptioneddate": "endDateView",
"custrecord_acws_reward_rewardname": "rewardNameEnView",
"custrecord_acws_reward_name_tc": "rewardNameTCView",
"custrecord_acws_reward_rewardname_2": "rewardNameJPView",
"custrecord_acws_reward_rewardname_3": "rewardNameKRView",
"custrecord_acws_reward_shortdes_en": "shortDescriptionEngView",
"custrecord_acws_reward_shortdes_tc": "shortDescriptionTCView",
"custrecord_acws_reward_shortdes_3": "shortDescriptionJPView",
"custrecord_acws_reward_shortdes_4": "shortDescriptionKRView",
"custrecord_acws_reward_des_en": "rewardDescriptionEnView",
"custrecord_acws_reward_des_tc": "rewardDescriptionTCView",
"custrecord_acws_reward_des_3": "rewardDescriptionJPView",
"custrecord_acws_reward_des_4": "rewardDescriptionKRView",
"custrecord_acws_reward_tc_en": "tcEnView",
"custrecord_acws_reward_tc_tc": "tcTcView",
"custrecord_acws_reward_tc_3": "tcJpView",
"custrecord_acws_reward_tc_4": "tcKrView",
"custrecord_acws_publishstatus": "rewardStatusView",
"custrecord_acws_reward_pointsrequired": "pointRequiredView"
},
"customrecord_acws_spending": {
"custrecord_acws_invoiceno": "memoIdView",
"custrecord_acws_member": "memberIdView",
"custrecord_acws_spendingcurrency": "memoCurrencyView",
"custrecord_acws_invoicedate": "memoDateView",
"custrecord_acws_netamount": "memoAmountView",
"custrecord_acws_memostore": "storeCodeView"
},
"customrecord_acws_pointtransaction": {
"name": "pointTransactionIdView",
"custrecord_acws_pointtransaction_member": "pointMemberIdView",
"custrecord_acws_pointtransaction_points": "pointValueView",
"custrecord_acws_pointtransaction_entype": "pointEntryTypeView",
"custrecord_acws_pointtransstore": "storeCodeView",
"custrecord_acws_pointtransaction_trdate": "pointTransactionDateView"
},
"customrecord_acws_tier": {
"name": "tierNameView",
"custrecord_acws_tierhidepointbalance": "amountOrPointView",
"custrecord_acws_tier_loyaltyprogram": "loyalProgramView",
"custrecord_acws_tier_upgradecalculation": "upgradeCalculationView",
"custrecord_acws_nexttier": "nextTierView",
"custrecord_acws_tiersequence": "sequenceView",
"custrecord_acws_tier_showchart": "showChartView",
"custrecord_acws_tier_showpicture": "showPictureView",
"custrecord_acws_tier_pictureurl": "pictureUrlView"
},
"customrecord_acws_voucher": {
"name": "redeemTransactionIdView",
"custrecord_acws_voucher_reward": "redeemCouponIdView",
"custrecord_acws_voucher_membership": "redeemTransMemberIdView",
"custrecord_acws_voucher_pictureurl": "pictureUrlView",
"custrecord_acws_voucher_rewardtype": "rtRewardTypeView",
"custrecord_acws_voucher_rewardname": "rewardNameEnView",
"custrecord_acws_voucher_rewardnametc": "rewardNameTcView",
"custrecord_acws_voucher_rewardname_2": "rewardNameJpView",
"custrecord_acws_voucher_rewardname_3": "rewardNameKrView",
"custrecord_acws_voucher_voucherno": "rtVoucherNoView",
"created": "createdOnView",
"custrecord_acws_voucher_expirydate": "expiryDateView",
"custrecord_acws_voucher_txstatus": "rtTransStatusView",
"custrecord_acws_voucher_desc_en": "rewardDescriptionEnView",
"custrecord_acws_voucher_desc_tc": "rewardDescriptionTCView",
"custrecord_acws_voucher_desc_3": "rewardDescriptionJPView",
"custrecord_acws_voucher_desc_4": "rewardDescriptionKRView",
"custrecord_acws_voucher_shortdesc_en": "shortDescriptionEnView",
"custrecord_acws_voucher_shortdesc_tc": "shortDescriptionJPView",
"custrecord_acws_voucher_shortdesc_3": "shortDescriptionKRView",
"custrecord_acws_voucher_shortdesc_4": "couponTypeShowInWebPortalView"
}
},
"optionSetMapping": {
"contact": {
"custentity_awcs_contactagegroup": {
"557130000": 1,
"805110000": 2,
"805110001": 3,
"805110002": 4,
"805110003": 5,
"805110004": 6,
"805110005": 7,
"557130001": 8
},
"custentity_acws_contactgender": {
"805110000": 3,
"1": 1,
"2": 2
}
},
"customrecord_acws_voucher": {
"custrecord_acws_voucher_txstatus": {
"557130000": 1,
"557130001": 2,
"557130005": 3,
"557130002": 4,
"557130003": 5,
"557130004": 6
}
},
"customrecord_acws_membership": {
"custrecord_acws_memberstatus": {
"557130000": 1,
"557130001": 2
}
},
"customrecord_acws_reward": {
"custrecord_acws_reward_category": {
"557130000": 1,
"557130001": 2,
"557130002": 3
},
"custrecord_acws_publishstatus": {
"557130000": 1,
"557130001": 2,
"557130002": 3
}
}
}
}
```