-
Notifications
You must be signed in to change notification settings - Fork 199
Expand file tree
/
Copy pathcustomers.ts
More file actions
179 lines (155 loc) · 6.02 KB
/
Copy pathcustomers.ts
File metadata and controls
179 lines (155 loc) · 6.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
import { z } from 'zod'
import * as schemas from '../schemas.js'
import type {
AppCustomerData,
AppStripeCreateCheckoutSessionResult,
AppStripeCreateCustomerPortalSessionResult,
ChargePagePaginatedResponse,
CreateChargeFlatFeeRequest,
CreateChargeUsageBasedRequest,
CreateCreditAdjustmentRequest as CreateCreditAdjustmentRequestBody,
CreateCreditGrantRequestInput,
CreateCustomerRequest as CreateCustomerRequestBody,
CreditAdjustment,
CreditBalances,
CreditGrant,
CreditGrantPagePaginatedResponse,
CreditTransactionPaginatedResponse,
CursorPaginationQueryPage,
Customer,
CustomerData,
CustomerPagePaginatedResponse,
CustomerStripeCreateCheckoutSessionRequestInput,
CustomerStripeCreateCustomerPortalSessionRequest,
GetCreditBalanceParamsFilter,
ListChargesParamsFilter,
ListCreditGrantsParamsFilter,
ListCreditTransactionsParamsFilter,
ListCustomersParamsFilter,
SortQueryInput,
UpdateCreditGrantExternalSettlementRequest as UpdateCreditGrantExternalSettlementRequestBody,
UpsertAppCustomerDataRequest,
UpsertCustomerBillingDataRequest,
UpsertCustomerRequest as UpsertCustomerRequestBody,
} from '../types.js'
export type CreateCustomerRequest = CreateCustomerRequestBody
export type CreateCustomerResponse = Customer
export type GetCustomerRequest = {
customerId: string
}
export type GetCustomerResponse = Customer
export interface ListCustomersQuery {
/** Determines which page of the collection to retrieve. */
page?: { size?: number; number?: number }
/** Sort customers returned in the response. Supported sort attributes are: - `id` - `name` (default) - `created_at` The `asc` suffix is optional as the default sort order is ascending. The `desc` suffix is used to specify a descending order. */
sort?: SortQueryInput
/** Filter customers returned in the response. To filter customers by key add the following query param: filter[key]=my-db-id */
filter?: ListCustomersParamsFilter
}
export type ListCustomersRequest = ListCustomersQuery
export type ListCustomersResponse = CustomerPagePaginatedResponse
export type UpsertCustomerRequest = {
customerId: string
body: UpsertCustomerRequestBody
}
export type UpsertCustomerResponse = Customer
export type DeleteCustomerRequest = {
customerId: string
}
export type DeleteCustomerResponse = void
export type GetCustomerBillingRequest = {
customerId: string
}
export type GetCustomerBillingResponse = CustomerData
export type UpdateCustomerBillingRequest = {
customerId: string
body: UpsertCustomerBillingDataRequest
}
export type UpdateCustomerBillingResponse = CustomerData
export type UpdateCustomerBillingAppDataRequest = {
customerId: string
body: UpsertAppCustomerDataRequest
}
export type UpdateCustomerBillingAppDataResponse = AppCustomerData
export type CreateCustomerStripeCheckoutSessionRequest = {
customerId: string
body: CustomerStripeCreateCheckoutSessionRequestInput
}
export type CreateCustomerStripeCheckoutSessionResponse =
AppStripeCreateCheckoutSessionResult
export type CreateCustomerStripePortalSessionRequest = {
customerId: string
body: CustomerStripeCreateCustomerPortalSessionRequest
}
export type CreateCustomerStripePortalSessionResponse =
AppStripeCreateCustomerPortalSessionResult
export type CreateCreditGrantRequest = {
customerId: string
body: CreateCreditGrantRequestInput
}
export type CreateCreditGrantResponse = CreditGrant
export type GetCreditGrantRequest = {
customerId: string
creditGrantId: string
}
export type GetCreditGrantResponse = CreditGrant
export interface ListCreditGrantsQuery {
/** Determines which page of the collection to retrieve. */
page?: { size?: number; number?: number }
/** Filter credit grants returned in the response. */
filter?: ListCreditGrantsParamsFilter
}
export type ListCreditGrantsRequest = ListCreditGrantsQuery & {
customerId: string
}
export type ListCreditGrantsResponse = CreditGrantPagePaginatedResponse
export interface GetCustomerCreditBalanceQuery {
/** Return the credit balance as of this timestamp. Defaults to the current time. */
timestamp?: string
filter?: GetCreditBalanceParamsFilter
}
export type GetCustomerCreditBalanceRequest = GetCustomerCreditBalanceQuery & {
customerId: string
}
export type GetCustomerCreditBalanceResponse = CreditBalances
export type CreateCreditAdjustmentRequest = {
customerId: string
body: CreateCreditAdjustmentRequestBody
}
export type CreateCreditAdjustmentResponse = CreditAdjustment
export type UpdateCreditGrantExternalSettlementRequest = {
customerId: string
creditGrantId: string
body: UpdateCreditGrantExternalSettlementRequestBody
}
export type UpdateCreditGrantExternalSettlementResponse = CreditGrant
export interface ListCreditTransactionsQuery {
page?: CursorPaginationQueryPage
/** Filter credit transactions returned in the response. */
filter?: ListCreditTransactionsParamsFilter
}
export type ListCreditTransactionsRequest = ListCreditTransactionsQuery & {
customerId: string
}
export type ListCreditTransactionsResponse = CreditTransactionPaginatedResponse
export interface ListCustomerChargesQuery {
/** Determines which page of the collection to retrieve. */
page?: { size?: number; number?: number }
/** Sort charges returned in the response. Supported sort attributes are: - `id` - `created_at` - `service_period.from` - `billing_period.from` */
sort?: SortQueryInput
/** Filter charges. To filter charges by status add the following query param: `filter[status][oeq]=created,active` */
filter?: ListChargesParamsFilter
/** Expand full objects for referenced entities. Supported values are: - `real_time_usage`: Expand the charge's real-time usage. */
expand?: 'real_time_usage'[]
}
export type ListCustomerChargesRequest = ListCustomerChargesQuery & {
customerId: string
}
export type ListCustomerChargesResponse = ChargePagePaginatedResponse
export type CreateCustomerChargesRequest = {
customerId: string
body: CreateChargeFlatFeeRequest | CreateChargeUsageBasedRequest
}
export type CreateCustomerChargesResponse = z.output<
typeof schemas.createCustomerChargesResponse
>