Skip to content

Commit

Permalink
change structure to domain and 0-level types
Browse files Browse the repository at this point in the history
  • Loading branch information
weronika-kurczyna committed Oct 17, 2023
1 parent 2f6c6f4 commit 54db76d
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 145 deletions.
37 changes: 27 additions & 10 deletions .changeset/bright-mirrors-clean.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,36 @@
---
'@voucherify/sdk': major
'@voucherify/sdk': minor
---

Added support for following endpoints:
- GET /vouchers/{code}/transactions (client.vouchers.listTransactions(code, query))
- POST /vouchers/{code}/transactions/export (client.vouchers.exportGiftCardTransactions(code, body))
- POST /vouchers/{code}/transactions/export (client.vouchers.exportTransactions(code, body))

**New exported types/interfaces**
Domain types:
- GiftCardTransaction
- GiftCardTransactionIdentity
- GiftCardTransactionBase
- GiftCardTransactionResponseData
GiftCardTransactionDetails
- GiftCardTransactionRedemptionDetails
- GiftCardTransactionRefundDetails
- GiftCardTransactionAdditionDetails
- GiftCardTransactionRemovalDetails
- VoucherTransaction
- VoucherTransactionsExport
- VoucherTransactionExportIdentity
- VoucherTransactionExportBase
- VoucherTransactionExportResponseData
- VoucherTransactionsExportFields

0-level types:
- VouchersListTransactionsRequestQuery
- VouchersListGiftCardTransactionsResponseBody
- VouchersListGiftCardTransactionsType
- VouchersListGiftCardTransactionsData
- VouchersExportGiftCardTransactionsRequestBody
- VouchersExportGiftCardTransactionsResponseBody
- VouchersExportGiftCardTransactionsParams
- VouchersExportGiftCardTransactionsFields
- VouchersExportGiftCardTransactionsParamsFilters
- VouchersListTransactionsResponseBody -
- VouchersExportTransactionsRequestBody
- VouchersExportTransactionsResponseBody

**Other changes**
- Use `VouchersExportTransactionsRequestBody` as `LoyaltiesExportCardTransactionsRequestBody` (these types are identical, both related to the export of loyalty card transactions)
- Use `VouchersExportTransactionsResponseBody` as `LoyaltiesExportCardTransactionsResponseBody` ((these types are identical, both related to the export of loyalty card transactions))

67 changes: 0 additions & 67 deletions packages/sdk/src/types/Loyalties.ts
Original file line number Diff line number Diff line change
Expand Up @@ -810,73 +810,6 @@ interface MappingFixed {
points: number
}

export interface LoyaltyCardTransaction {
id: string
source_id: string | null
voucher_id: string
campaign_id: string
source: string | null
reason: string | null
type: LoyaltyCardTransactionsType
details: {
balance: {
type: 'loyalty_card'
total: number
object: 'balance'
points: number
balance: number
related_object: {
id: string
type: 'voucher'
}
}
order?: {
id: string
source_id: string
}
event?: {
id: string
type: string
}
earning_rule?: {
id: string
source: {
banner: string
}
}
segment?: {
id: string
name: string
}
loyalty_tier?: {
id: string
name: string
}
redemption?: {
id: string
}
rollback?: {
id: string
}
reward?: {
id: string
name: string
}
custom_event?: {
id: string
type: string
}
event_schema?: {
id: string
name: string
}
source_voucher?: SimpleLoyaltyVoucher
destination_voucher?: SimpleLoyaltyVoucher
}
related_transaction_id: string | null
created_at: string
}

export interface SimpleLoyaltyVoucher {
id: string
code: string
Expand Down
135 changes: 67 additions & 68 deletions packages/sdk/src/types/Vouchers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -256,23 +256,36 @@ export type VouchersBulkUpdateResponse = {

// Domain types

export type VoucherTransaction = GiftCardTransaction | LoyaltyCardTransaction
export type GiftCardTransaction = Required<GiftCardTransactionIdentity> &
Required<GiftCardTransactionBase> &
Required<GiftCardTransactionResponseData> &
GiftCardTransactionDetails
export interface GiftCardTransactionIdentity {
id?: string
source_id?: string | null
}

export type GiftCardTransaction =
| GiftCardTransactionRedemption
| GiftCardTransactionRefund
| GiftCardTransactionAddition
| GiftCardTransactionRemoval
export interface GiftCardTransactionBase {
voucher_id?: string
campaign_id?: string | null
related_transaction_id?: string | null
reason?: string | null
}

export interface GiftCardTransactionRedemption {
id: string
source_id: string | null
voucher_id: string
campaign_id: string | null
source: null
reason: string | null
type: 'CREDITS_REDEMPTION'
details: {
export interface GiftCardTransactionResponseData {
created_at?: string
}

export type GiftCardTransactionDetails =
| Required<GiftCardTransactionRedemptionDetails>
| Required<GiftCardTransactionRefundDetails>
| Required<GiftCardTransactionAdditionDetails>
| Required<GiftCardTransactionRemovalDetails>

export interface GiftCardTransactionRedemptionDetails {
source?: null
type?: 'CREDITS_REDEMPTION'
details?: {
balance: {
type: 'gift_voucher'
total: number
Expand All @@ -292,19 +305,12 @@ export interface GiftCardTransactionRedemption {
id: string
}
}
related_transaction_id: string | null
created_at: string
}

export interface GiftCardTransactionRefund {
id: string
source_id: string | null
voucher_id: string
campaign_id: string | null
source: null
reason: string | null
type: 'CREDITS_REFUND'
details: {
export interface GiftCardTransactionRefundDetails {
source?: null
type?: 'CREDITS_REFUND'
details?: {
balance: {
type: 'gift_voucher'
total: number
Expand All @@ -327,17 +333,10 @@ export interface GiftCardTransactionRefund {
id: string
}
}
related_transaction_id: string | null
created_at: string
}

export interface GiftCardTransactionAddition {
id: string
source_id: string | null
voucher_id: string
campaign_id: string | null
export interface GiftCardTransactionAdditionDetails {
source: 'voucherify-web-ui' | 'API'
reason: string | null
type: 'CREDITS_ADDITION'
details: {
balance: {
Expand All @@ -353,17 +352,10 @@ export interface GiftCardTransactionAddition {
}
}
}
related_transaction_id: string | null
created_at: string
}

export interface GiftCardTransactionRemoval {
id: string
source_id: string | null
voucher_id: string
campaign_id: string | null
export interface GiftCardTransactionRemovalDetails {
source: 'voucherify-web-ui' | 'API'
reason: string | null
type: 'CREDITS_REMOVAL'
details: {
balance: {
Expand All @@ -379,15 +371,39 @@ export interface GiftCardTransactionRemoval {
}
}
}
related_transaction_id: string | null
created_at: string
}

export type VoucherTransaction = GiftCardTransaction | LoyaltyCardTransaction

// Export

export interface VoucherTransactionsExport {
order?: '-created_at' | 'created_at'
fields?: VoucherTransactionsExportFields[]
export type VoucherTransactionsExport = Required<VoucherTransactionExportIdentity> &
Required<VoucherTransactionExportBase> &
Required<VoucherTransactionExportResponseData>
export interface VoucherTransactionExportIdentity {
id?: string
}
export interface VoucherTransactionExportBase {
status?: 'SCHEDULED'
channel?: string
parameters?: {
order?: string
fields?: VoucherTransactionsExportFields[]
filters: {
voucher_id: {
conditions: {
$in: [string]
}
}
}
}
result?: null
user_id?: string | null
exported_object?: 'voucher_transactions'
}
export interface VoucherTransactionExportResponseData {
object?: 'export'
created_at?: string
}

export type VoucherTransactionsExportFields =
Expand Down Expand Up @@ -421,27 +437,10 @@ export interface VouchersListTransactionsResponseBody {
// Export transactions

export interface VouchersExportTransactionsRequestBody {
parameters?: VoucherTransactionsExport
}

export interface VouchersExportTransactionsResponseBody {
id: string
object: 'export'
created_at: string
status: 'SCHEDULED'
channel: string
exported_object: 'voucher_transactions'
parameters: {
order?: string
parameters?: {
order?: '-created_at' | 'created_at'
fields?: VoucherTransactionsExportFields[]
filters: {
voucher_id: {
conditions: {
$in: [string]
}
}
}
}
result: null
user_id: string | null
}

export type VouchersExportTransactionsResponseBody = VoucherTransactionsExport

0 comments on commit 54db76d

Please sign in to comment.