Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pz/types 010 - loyalties members #238

Merged
merged 68 commits into from
Oct 12, 2023
Merged
Show file tree
Hide file tree
Changes from 52 commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
fdbfeb4
changes to validateVoucher
p-zielinski Aug 24, 2023
4ded331
simple validations tests
p-zielinski Aug 24, 2023
6b57f8b
changelog
p-zielinski Aug 25, 2023
88a7a89
Update tidy-comics-hear.md
p-zielinski Aug 25, 2023
f869c79
node 16.20
p-zielinski Aug 25, 2023
f3a409f
node 16
p-zielinski Aug 25, 2023
b4ef41b
requested changes
p-zielinski Aug 25, 2023
9d8cb56
Update tidy-comics-hear.md
p-zielinski Aug 25, 2023
267f027
Update generateRandomString.ts
p-zielinski Sep 6, 2023
c61c01e
requested changes
p-zielinski Sep 6, 2023
6f1c213
Update package.json
p-zielinski Sep 6, 2023
238b54b
Update package.json
p-zielinski Sep 6, 2023
b580b54
Update tidy-comics-hear.md
p-zielinski Sep 6, 2023
87d34be
Revert "node 16.20"
p-zielinski Sep 6, 2023
4f982f6
minor changes
p-zielinski Sep 6, 2023
0a500c7
Delete createCampaignWithOnePromotionTierAndRandomName.ts
p-zielinski Sep 6, 2023
888db98
requested changes
p-zielinski Sep 6, 2023
4d1aa28
docs
p-zielinski Sep 6, 2023
8eb0de5
Revert "docs"
p-zielinski Sep 7, 2023
9335b25
remove validations
p-zielinski Sep 7, 2023
46a40bd
changeset
p-zielinski Sep 7, 2023
98c3dcd
Update tidy-comics-hear.md
p-zielinski Sep 7, 2023
509c2b1
Update tidy-comics-hear.md
p-zielinski Sep 7, 2023
88e887c
Update README.md
p-zielinski Sep 7, 2023
1768991
Update tidy-comics-hear.md
p-zielinski Sep 7, 2023
f37df9e
Create CHANGESET-TAMPLATE.md
p-zielinski Sep 7, 2023
747d2ad
Update tidy-comics-hear.md
p-zielinski Sep 7, 2023
9152eb1
Update CHANGESET-TAMPLATE.md
p-zielinski Sep 7, 2023
5ff5672
Update CHANGESET-TAMPLATE.md
p-zielinski Sep 7, 2023
b195dd3
Update CHANGESET-TAMPLATE.md
p-zielinski Sep 7, 2023
23a3f58
Update Loyalties.ts
p-zielinski Sep 8, 2023
127fbfa
in progress
p-zielinski Sep 11, 2023
8a11525
Update CHANGESET-TAMPLATE.md
p-zielinski Sep 11, 2023
d8355b0
Update tidy-comics-hear.md
p-zielinski Sep 11, 2023
e07b6ee
in progress
p-zielinski Sep 11, 2023
99756bc
Update CHANGESET-TAMPLATE.md
p-zielinski Sep 11, 2023
075934f
Update CHANGESET-TAMPLATE.md
p-zielinski Sep 12, 2023
fa17169
Update CHANGESET-TAMPLATE.md
p-zielinski Sep 12, 2023
e7b8489
in progress
p-zielinski Sep 12, 2023
32b04e8
readme, types
p-zielinski Sep 12, 2023
c5f897a
Update tidy-comics-five.md
p-zielinski Sep 12, 2023
374f717
Update Loyalties.ts
p-zielinski Sep 12, 2023
e27016c
fixes
p-zielinski Sep 12, 2023
fc93ff6
minor fixes
p-zielinski Sep 13, 2023
90d938c
dotenv in packages/sdk package.json
p-zielinski Sep 13, 2023
ad5e25e
requested changes
p-zielinski Sep 13, 2023
ce87618
Update tidy-comics-hear.md
p-zielinski Sep 14, 2023
7264b9b
Merge branch 'pz/types-001' into pz/types-010
p-zielinski Sep 15, 2023
79f3b54
Merge branch 'main' into pz/types-010
p-zielinski Sep 15, 2023
5222dbb
Delete tidy-comics-hear.md
p-zielinski Sep 15, 2023
d29192b
tests
p-zielinski Sep 15, 2023
0b7ca13
Update loyalties.spec.ts
p-zielinski Sep 16, 2023
219f12c
not finished, few changes
p-zielinski Oct 4, 2023
57babff
methods, readme
p-zielinski Oct 4, 2023
14a8c6b
in progress
p-zielinski Oct 4, 2023
46b8f97
naming
p-zielinski Oct 4, 2023
950b871
Update tidy-comics-five.md
p-zielinski Oct 4, 2023
74692ec
Update README.md
p-zielinski Oct 4, 2023
6504c8c
Update README.md
p-zielinski Oct 5, 2023
ccd7134
new types
p-zielinski Oct 5, 2023
2e27599
export and changeset
p-zielinski Oct 5, 2023
f5ced06
Update Loyalties.ts
p-zielinski Oct 9, 2023
7e0c796
Update Loyalties.ts
p-zielinski Oct 9, 2023
23669b5
fix
p-zielinski Oct 9, 2023
ac77af4
Merge branch 'main' into pz/types-010
p-zielinski Oct 9, 2023
a78d0ef
Update Loyalties.ts
p-zielinski Oct 11, 2023
88d8c96
Update Loyalties.ts
p-zielinski Oct 11, 2023
b10f51d
fix
p-zielinski Oct 11, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/tidy-comics-five.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@voucherify/sdk': minor
---

Add support for few endpoints of Loyalties API.
- Added support for new endpoints: `/loyalties/members/{memberId}`, `/loyalties/members/{memberId}/activities`, `/loyalties/members/{memberId}/rewards`, `/loyalties/{campaignId}/members/{memberId}/transfers`, `/loyalties/{campaignId}/members/{memberId}/points-expiration`, `/loyalties/members/{memberId}/transactions`, `/loyalties/{campaignId}/members/{memberId}/transactions`, `/loyalties/members/{memberId}/transactions/export` and `/loyalties/{campaignId}/members/{memberId}/transactions/export` [(examples of usage available in readme.md)](..%2F..%2Fpackages%2Fsdk%2FREADME.md)
p-zielinski marked this conversation as resolved.
Show resolved Hide resolved
- New exported types/interfaces: `ListMemberRewardsParams`, `LoyaltiesListMemberRewardsResponse`, `LoyaltiesTransferPoints`, `GetPointsExpirationParams`, `LoyaltiesGetPointsExpirationResponse`, `ListLoyaltyCardTransactionsParams`, `LoyaltiesListLoyaltyCardTransactionsResponse`, `LoyaltyCardTransactionsType`, `SimpleLoyaltyVoucher`, `LoyaltyCardTransactionsResponse`, `LoyaltyCardTransactionsFields`, `LoyaltiesExportLoyaltyCardTransactionsParams` and `LoyaltiesExportLoyaltyCardTransactionsResponse`
100 changes: 96 additions & 4 deletions packages/sdk/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -966,10 +966,18 @@ Methods are provided within `client.loyalties.*` namespace.
- [List Loyalty Program Earning Rules](#list-loyalty-program-earning-rules)
- [Create Loyalty Program Member](#create-loyalty-program-member)
- [Get Loyalty Program Member](#get-loyalty-program-member)
- [List Loyalty Program Members](#list-loyalty-members)
- [Get Loyalty Program Member Without CampaignId](#get-loyalty-program-member-without-campaignid)
- [List Loyalty Program Members](#list-loyalty-program-members)
- [Get Loyalty Program Member Activities](#get-loyalty-program-member-activities)
- [Add Loyalty Card Balance](#add-loyalty-card-balance)
p-zielinski marked this conversation as resolved.
Show resolved Hide resolved
- [Get Loyalty Program Member Activities Without CampaignId](#get-loyalty-program-member-activities-without-campaignid)
- [Add Or Remove Loyalty Card Balance](#add-or-remove-loyalty-card-balance)
- [Transfer Loyalty Points](#transfer-loyalty-points)
- [Get Loyalty Points Expiration](#get-loyalty-points-expiration)
- [Redeem Loyalty Card](#redeem-loyalty-card)
- [List Loyalty Card Transactions](#list-loyalty-card-transactions)
- [List Loyalty Card Transactions With CampaignId](#list-loyalty-card-transactions-with-campaignid)
- [[Export Loyalty Card Transactions](#export-loyalty-card-transactions)
- [Export Loyalty Card Transactions With CampaignId](#export-loyalty-card-transactions-with-campaignid)

#### [Create Loyalty Program](https://docs.voucherify.io/reference/create-loyalty-program)

Expand Down Expand Up @@ -1064,6 +1072,12 @@ client.loyalties.createMember(campaignId, member)
client.loyalties.getMember(campaignId, memberId)
```

#### [Get Loyalty Program Member Without CampaignId](https://docs.voucherify.io/reference/get-member-1)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Few issues here:

  1. The header and method name suggest that we do not need a campaign ID, but you expect it in params and link to documentation where the campaign ID is required.
  2. I do not like naming. I understand that we have two similar endpoints, one that expects just member ID and the second one that needs campaign ID in addition. In documentation, both are described as Get Member. I guess (but we can confirm it) that the one that needs a campaign ID is a legacy one. We should give a name that will be intuitive for a developer who does not know about the context (legacy method). So, maybe getMemberById?


```javascript
client.loyalties.getMemberWithoutCampaignId(campaignId, memberId)
```

#### [List Loyalty Program Members](https://docs.voucherify.io/reference/list-members)

```javascript
Expand All @@ -1079,14 +1093,52 @@ client.loyalties.getMemberActivities(campaignId, memberId)

`memberId` referrers to Loyalty Card code.

#### [Add Loyalty Card Balance](https://docs.voucherify.io/reference/add-loyalty-card-balance)
#### [Get Loyalty Program Member Activities Without CampaignId](https://docs.voucherify.io/reference#get-member-activities)

```javascript
client.loyalties.addPoints(campaignId, memberId, balance)
client.loyalties.getMemberActivitiesWithoutCampaignId(memberId)
```

`memberId` referrers to Loyalty Card code.

#### [List Member Rewards](https://docs.voucherify.io/reference/list-member-rewards)

```javascript
client.loyalties.listMemberRewards(memberId, params)
```

`memberId` referrers to Loyalty Card code.

---

#### [Add Or Remove Loyalty Card Balance](https://docs.voucherify.io/reference/add-remove-loyalty-card-balance-1)

```javascript
client.loyalties.addOrRemoveLoyaltyCardBalance(memberId, balance, campaignId)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Naming: addOrRemoveLoyaltyCardBalance -> addOrRemoveCardBalance?

```

`memberId` referrers to Loyalty Card code.

#### [Transfer Loyalty Points](https://docs.voucherify.io/reference/transfer-points)

```javascript
client.loyalties.transferPoints(campaignId, memberId, transferLoyaltyPoints)
```

`memberId` referrers to Loyalty Card code.

---

#### [Get Loyalty Points Expiration](https://docs.voucherify.io/reference/get-points-expiration)

```javascript
client.loyalties.getPointsExpiration(campaignId, memberId)
```

`memberId` referrers to Loyalty Card code.

---

#### [Redeem Loyalty Card]

```javascript
Expand All @@ -1099,6 +1151,46 @@ When redeeming reward with type `COIN` you need to provide additional `order` ob

---

#### [List Loyalty Card Transactions](https://docs.voucherify.io/reference/list-loyalty-card-transactions)

```javascript
client.loyalties.listLoyaltyCardTransactions(memberId)
marcin-slezak marked this conversation as resolved.
Show resolved Hide resolved
```

`memberId` referrers to Loyalty Card code.

---

#### [List Loyalty Card Transactions With CampaignId](https://docs.voucherify.io/reference/list-loyalty-card-transactions-1)

```javascript
client.loyalties.listLoyaltyCardTransactionsWithCampaignId(campaignId, memberId)
p-zielinski marked this conversation as resolved.
Show resolved Hide resolved
```

`memberId` referrers to Loyalty Card code.

---

#### [Export Loyalty Card Transactions](https://docs.voucherify.io/reference/export-loyalty-card-transactions)

```javascript
client.loyalties.exportLoyaltyCardTransactions(memberId, exportLoyaltyCardTransactionsParams)
p-zielinski marked this conversation as resolved.
Show resolved Hide resolved
```

`memberId` referrers to Loyalty Card code.

---

#### [Export Loyalty Card Transactions With CampaignId](https://docs.voucherify.io/reference/export-loyalty-card-transactions-1)

```javascript
client.loyalties.exportLoyaltyCardTransactionsWithCampaignId(campaignId, memberId, exportLoyaltyCardTransactionsParams)
p-zielinski marked this conversation as resolved.
Show resolved Hide resolved
```

`memberId` referrers to Loyalty Card code.

---

### Segments

Methods are provided within `client.segments.*` namespace.
Expand Down
99 changes: 96 additions & 3 deletions packages/sdk/src/Loyalties.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,12 @@ export class Loyalties {
public getMember(campaignId: string, memberId: string) {
return this.client.get<T.LoyaltiesGetMemberResponse>(`/loyalties/${encode(campaignId)}/members/${memberId}`)
}
/**
* @see https://docs.voucherify.io/reference/get-member
*/
public getMemberWithoutCampaignId(memberId: string) {
return this.client.get<T.LoyaltiesGetMemberActivitiesResponse>(`/loyalties/members/${memberId}`)
}
/**
* @see https://docs.voucherify.io/reference/get-member-activities
*/
Expand All @@ -129,14 +135,54 @@ export class Loyalties {
)
}
/**
* @see https://docs.voucherify.io/reference/add-loyalty-card-balance
* @see https://docs.voucherify.io/reference/get-member-activities
*/
public addPoints(campaignId: string, memberId: string, balance: T.LoyaltiesAddPoints) {
public getMemberActivitiesWithoutCampaignId(memberId: string) {
return this.client.get<T.LoyaltiesGetMemberActivitiesResponse>(`/loyalties/members/${memberId}/activities`)
}
/**
* @see https://docs.voucherify.io/reference/list-member-rewards
*/
public listMemberRewards(memberId: string, params?: T.ListMemberRewardsParams) {
return this.client.get<T.LoyaltiesListMemberRewardsResponse>(
`/loyalties/members/${encode(memberId)}/rewards`,
params,
)
}
/**
* @see https://docs.voucherify.io/reference/add-remove-loyalty-card-balance-1
*/
public addOrRemoveLoyaltyCardBalance(memberId: string, balance: T.LoyaltiesAddPoints, campaignId?: string) {
return this.client.post<T.LoyaltiesAddPointsResponse>(
`/loyalties/${encode(campaignId)}/members/${memberId}/balance`,
campaignId
? `/loyalties/${encode(campaignId)}/members/${memberId}/balance`
: `/loyalties/members/${memberId}/balance`,
balance,
)
}

// Backward compatibility only. This method is not mentioned in readme anymore.
public addPoints(campaignId: string, memberId: string, balance: T.LoyaltiesAddPoints) {
return this.addOrRemoveLoyaltyCardBalance(memberId, balance, campaignId)
}
/**
* @see https://docs.voucherify.io/reference/transfer-points
*/
public transferPoints(campaignId: string, memberId: string, transferLoyaltyPoints: T.LoyaltiesTransferPoints[]) {
return this.client.post<T.LoyaltiesTransferPointsResponse>(
`/loyalties/${encode(campaignId)}/members/${encode(memberId)}/transfers`,
transferLoyaltyPoints,
)
}
/**
* @see https://docs.voucherify.io/reference/get-points-expiration
*/
public getPointsExpiration(campaignId: string, memberId: string, params?: T.GetPointsExpirationParams) {
return this.client.get<T.LoyaltiesGetPointsExpirationResponse>(
`/loyalties/${encode(campaignId)}/members/${memberId}/points-expiration`,
params,
)
}
/**
* @see https://docs.voucherify.io/reference/redeem-loyalty-card
*/
Expand All @@ -146,4 +192,51 @@ export class Loyalties {
params,
)
}
/**
* @see https://docs.voucherify.io/reference/list-loyalty-card-transactions
*/
public listLoyaltyCardTransactions(memberId: string, params?: T.ListLoyaltyCardTransactionsParams) {
return this.client.get<T.LoyaltiesListLoyaltyCardTransactionsResponse>(
`/loyalties/members/${encode(memberId)}/transactions`,
params,
)
}
/**
* @see https://docs.voucherify.io/reference/list-loyalty-card-transactions-1
*/
public listLoyaltyCardTransactionsWithCampaignId(
campaignId: string,
memberId: string,
params?: T.ListLoyaltyCardTransactionsParams,
) {
return this.client.get<T.LoyaltiesListLoyaltyCardTransactionsResponse>(
`/loyalties/${encode(campaignId)}/members/${encode(memberId)}/transactions`,
params,
)
}
/**
* @see https://docs.voucherify.io/reference/export-loyalty-card-transactions
*/
public exportLoyaltyCardTransactions(
memberId: string,
exportLoyaltyCardTransactionsParams: T.LoyaltiesExportLoyaltyCardTransactionsParams,
) {
return this.client.post<T.LoyaltiesExportLoyaltyCardTransactionsResponse>(
`/loyalties/members/${encode(memberId)}/transactions/export`,
exportLoyaltyCardTransactionsParams,
)
}
/**
* @see https://docs.voucherify.io/reference/export-loyalty-card-transactions-1
*/
public exportLoyaltyCardTransactionsWithCampaignId(
campaignId: string,
memberId: string,
exportLoyaltyCardTransactionsParams: T.LoyaltiesExportLoyaltyCardTransactionsParams,
) {
return this.client.post<T.LoyaltiesExportLoyaltyCardTransactionsResponse>(
`/loyalties/${encode(campaignId)}/members/${encode(memberId)}/transactions/export`,
exportLoyaltyCardTransactionsParams,
)
}
}
Loading
Loading