Skip to content

Commit

Permalink
Validation Rules types (#30)
Browse files Browse the repository at this point in the history
* Added Validation Rules types

* Updated Validation Rules types
  • Loading branch information
pkgacek authored Feb 3, 2021
1 parent 29f69e1 commit 1dec176
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 14 deletions.
5 changes: 5 additions & 0 deletions .changeset/lovely-emus-agree.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@voucherify/sdk': patch
---

Added Validation Rules types
42 changes: 29 additions & 13 deletions packages/sdk/src/ValidationRules.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import * as T from './types/ValidationRules'

import { encode, omit } from './helpers'
import type { RequestController } from './RequestController'

Expand All @@ -7,20 +9,23 @@ export class ValidationRules {
/**
* @see https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#create-validation-rules
*/
public create(validationRule: $FixMe) {
return this.client.post('/validation-rules', validationRule)
public create(validationRule: T.ValidationRulesCreate) {
return this.client.post<T.ValidationRulesCreateResponse>('/validation-rules', validationRule)
}
/**
* @see https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#get-validation-rules
*/
public get(validationRuleId: string) {
return this.client.get(`/validation-rules/${encode(validationRuleId)}`)
return this.client.get<T.ValidationRulesGetResponse>(`/validation-rules/${encode(validationRuleId)}`)
}
/**
* @see https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#update-validation-rules
*/
public update(validationRule: $FixMe) {
return this.client.put(`/validation-rules/${encode(validationRule.id)}`, omit(validationRule, ['id']))
public update(validationRule: T.ValidationRulesUpdate) {
return this.client.put<T.ValidationRulesUpdateResponse>(
`/validation-rules/${encode(validationRule.id)}`,
omit(validationRule, ['id']),
)
}
/**
* @see https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#delete-validation-rules
Expand All @@ -31,28 +36,39 @@ export class ValidationRules {
/**
* @see https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#create-validation-rules-assignment
*/
public createAssignment(validationRuleId: string, assignment: $FixMe) {
return this.client.post(`/validation-rules/${encode(validationRuleId)}/assignments`, assignment)
public createAssignment(validationRuleId: string, assignment: T.ValidationRulesCreateAssignment) {
return this.client.post<T.ValidationRulesCreateAssignmentResponse>(
`/validation-rules/${encode(validationRuleId)}/assignments`,
assignment,
)
}
/**
* @see https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#delete-validation-rules-assignment
*/
public deleteAssignment(validationRuleId: string, assignmentId: string) {
return this.client.delete(`/validation-rules/${encode(validationRuleId)}/assignments/${encode(assignmentId)}`)
}
public validate(validationRuleId: string, params?: $FixMe) {
return this.client.post(`/validation-rules/${encode(validationRuleId)}/validation`, params)

public validate(validationRuleId: string, params: $FixMe = {}) {
return this.client.post<T.ValidationRulesValidateResponse>(
`/validation-rules/${encode(validationRuleId)}/validation`,
params,
)
}

/**
* @see https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#list-validation-rules
*/
public list(params: $FixMe) {
return this.client.get('/validation-rules', params)
public list(params: T.ValidationRulesListParams = {}) {
return this.client.get<T.ValidationRulesListResponse>('/validation-rules', params)
}
/**
* @see https://docs.voucherify.io/reference?utm_source=github&utm_medium=sdk&utm_campaign=acq#list-validation-rule-assignments
*/
public listAssignments(validationRuleId: string, params: $FixMe) {
return this.client.get(`/validation-rules/${encode(validationRuleId)}/assignments`, params)
public listAssignments(validationRuleId: string, params: T.ValidationRulesListAssignmentsParams = {}) {
return this.client.get<T.ValidationRulesListAssignmentsResponse>(
`/validation-rules/${encode(validationRuleId)}/assignments`,
params,
)
}
}
81 changes: 81 additions & 0 deletions packages/sdk/src/types/ValidationRules.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
export interface ValidationRulesCreate {
name: string
error?: {
message?: string
}
rules?: {
logic?: string
[rule: string]: $FixMe
}
}

export interface ValidationRulesCreateResponse {
id: string
name: string
error?: {
message?: string
}
rules?: {
logic?: string
[rule: string]: $FixMe
}
created_at: string
updated_at?: string
object: 'validation_rules'
}

export interface ValidationRulesValidateResponse {
valid: boolean
rule_id: string
applicable_to: {
data: any[]
object: 'list'
total: number
}
}

export type ValidationRulesGetResponse = ValidationRulesCreateResponse & { assignments_count?: string }

export type ValidationRulesUpdate = Partial<ValidationRulesCreate> & { id: string }

export type ValidationRulesUpdateResponse = ValidationRulesCreateResponse

export interface ValidationRulesCreateAssignment {
voucher?: string
campaign?: string
promotion_tier?: string
}

export interface ValidationRulesCreateAssignmentResponse {
id: string
rule_id: string
related_object_id?: string
related_object_type?: string
created_at?: string
updated_at: string
object: 'validation_rules_assignment'
}

export interface ValidationRulesListParams {
limit?: number
page?: number
}

export interface ValidationRulesListResponse {
object: 'list'
total: number
data_ref: 'data'
data: ValidationRulesGetResponse[]
}

export interface ValidationRulesListAssignmentsParams {
limit?: number
page?: number
}

export interface ValidationRulesListAssignmentsResponse {
object: 'list'
total: number
data_ref: 'data'
data: ValidationRulesCreateAssignmentResponse[]
}
3 changes: 2 additions & 1 deletion packages/sdk/src/types/index.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
export * from './Customers'
export * from './Balance'
export * from './ValidationRules'
export * from './Rewards'
export * from './Products'
export * from './Distributions'
export * from './Segments'
export * from './Exports'
export * from './Orders'
export * from './Consents'
export * from './Events'
export * from './Events'

0 comments on commit 1dec176

Please sign in to comment.