-
Notifications
You must be signed in to change notification settings - Fork 0
/
objects_client.go
374 lines (346 loc) · 14.4 KB
/
objects_client.go
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
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
// Code generated by hsc. DO NOT EDIT.
package hubspot
import (
"net/http"
endpoint "github.com/marcozac/hubspot-go/endpoint"
)
// ContactPropertiesEmbedder is the interface that must be implemented to
// create a client for the Contact object.
//
// Example:
//
// type MyContactProperties struct {
// // Embed the default properties to ensure that the custom properties are
// // added to the default ones.
// ContactDefaultProperties
// // MyCustomProperty is a an example custom property.
// MyCustomProperty string `json:"my_custom_property,omitempty"`
// }
type ContactPropertiesEmbedder interface {
ObjectPropertiesEmbedder
EmbedContactProperties()
}
// NewContactClient returns a new client for the HubSpot API.
//
// The given HTTP client is used to make requests to the HubSpot API and must
// be configured to use the appropriate authentication method. You can use
// [NewHTTPClient] to create a new HTTP client from an OAuth2 token source.
//
// The properties type may be provided as a type param or inferred from the
// optional pe parameter. In the latter case, the given value is used only
// for type inference and has no effect on the client.
func NewContactClient[PE ContactPropertiesEmbedder](httpClient *http.Client, pe ...PE) *ObjectClient[PE] {
return NewObjectClient(endpoint.Contacts, httpClient, pe...)
}
// CompanyPropertiesEmbedder is the interface that must be implemented to
// create a client for the Company object.
//
// Example:
//
// type MyCompanyProperties struct {
// // Embed the default properties to ensure that the custom properties are
// // added to the default ones.
// CompanyDefaultProperties
// // MyCustomProperty is a an example custom property.
// MyCustomProperty string `json:"my_custom_property,omitempty"`
// }
type CompanyPropertiesEmbedder interface {
ObjectPropertiesEmbedder
EmbedCompanyProperties()
}
// NewCompanyClient returns a new client for the HubSpot API.
//
// The given HTTP client is used to make requests to the HubSpot API and must
// be configured to use the appropriate authentication method. You can use
// [NewHTTPClient] to create a new HTTP client from an OAuth2 token source.
//
// The properties type may be provided as a type param or inferred from the
// optional pe parameter. In the latter case, the given value is used only
// for type inference and has no effect on the client.
func NewCompanyClient[PE CompanyPropertiesEmbedder](httpClient *http.Client, pe ...PE) *ObjectClient[PE] {
return NewObjectClient(endpoint.Companies, httpClient, pe...)
}
// DealPropertiesEmbedder is the interface that must be implemented to
// create a client for the Deal object.
//
// Example:
//
// type MyDealProperties struct {
// // Embed the default properties to ensure that the custom properties are
// // added to the default ones.
// DealDefaultProperties
// // MyCustomProperty is a an example custom property.
// MyCustomProperty string `json:"my_custom_property,omitempty"`
// }
type DealPropertiesEmbedder interface {
ObjectPropertiesEmbedder
EmbedDealProperties()
}
// NewDealClient returns a new client for the HubSpot API.
//
// The given HTTP client is used to make requests to the HubSpot API and must
// be configured to use the appropriate authentication method. You can use
// [NewHTTPClient] to create a new HTTP client from an OAuth2 token source.
//
// The properties type may be provided as a type param or inferred from the
// optional pe parameter. In the latter case, the given value is used only
// for type inference and has no effect on the client.
func NewDealClient[PE DealPropertiesEmbedder](httpClient *http.Client, pe ...PE) *ObjectClient[PE] {
return NewObjectClient(endpoint.Deals, httpClient, pe...)
}
// FeedbackSubmissionPropertiesEmbedder is the interface that must be implemented to
// create a client for the FeedbackSubmission object.
//
// Example:
//
// type MyFeedbackSubmissionProperties struct {
// // Embed the default properties to ensure that the custom properties are
// // added to the default ones.
// FeedbackSubmissionDefaultProperties
// // MyCustomProperty is a an example custom property.
// MyCustomProperty string `json:"my_custom_property,omitempty"`
// }
type FeedbackSubmissionPropertiesEmbedder interface {
ObjectPropertiesEmbedder
EmbedFeedbackSubmissionProperties()
}
// NewFeedbackSubmissionClient returns a new client for the HubSpot API.
//
// The given HTTP client is used to make requests to the HubSpot API and must
// be configured to use the appropriate authentication method. You can use
// [NewHTTPClient] to create a new HTTP client from an OAuth2 token source.
//
// The properties type may be provided as a type param or inferred from the
// optional pe parameter. In the latter case, the given value is used only
// for type inference and has no effect on the client.
func NewFeedbackSubmissionClient[PE FeedbackSubmissionPropertiesEmbedder](httpClient *http.Client, pe ...PE) *ObjectClient[PE] {
return NewObjectClient(endpoint.FeedbackSubmissions, httpClient, pe...)
}
// LineItemPropertiesEmbedder is the interface that must be implemented to
// create a client for the LineItem object.
//
// Example:
//
// type MyLineItemProperties struct {
// // Embed the default properties to ensure that the custom properties are
// // added to the default ones.
// LineItemDefaultProperties
// // MyCustomProperty is a an example custom property.
// MyCustomProperty string `json:"my_custom_property,omitempty"`
// }
type LineItemPropertiesEmbedder interface {
ObjectPropertiesEmbedder
EmbedLineItemProperties()
}
// NewLineItemClient returns a new client for the HubSpot API.
//
// The given HTTP client is used to make requests to the HubSpot API and must
// be configured to use the appropriate authentication method. You can use
// [NewHTTPClient] to create a new HTTP client from an OAuth2 token source.
//
// The properties type may be provided as a type param or inferred from the
// optional pe parameter. In the latter case, the given value is used only
// for type inference and has no effect on the client.
func NewLineItemClient[PE LineItemPropertiesEmbedder](httpClient *http.Client, pe ...PE) *ObjectClient[PE] {
return NewObjectClient(endpoint.LineItems, httpClient, pe...)
}
// ProductPropertiesEmbedder is the interface that must be implemented to
// create a client for the Product object.
//
// Example:
//
// type MyProductProperties struct {
// // Embed the default properties to ensure that the custom properties are
// // added to the default ones.
// ProductDefaultProperties
// // MyCustomProperty is a an example custom property.
// MyCustomProperty string `json:"my_custom_property,omitempty"`
// }
type ProductPropertiesEmbedder interface {
ObjectPropertiesEmbedder
EmbedProductProperties()
}
// NewProductClient returns a new client for the HubSpot API.
//
// The given HTTP client is used to make requests to the HubSpot API and must
// be configured to use the appropriate authentication method. You can use
// [NewHTTPClient] to create a new HTTP client from an OAuth2 token source.
//
// The properties type may be provided as a type param or inferred from the
// optional pe parameter. In the latter case, the given value is used only
// for type inference and has no effect on the client.
func NewProductClient[PE ProductPropertiesEmbedder](httpClient *http.Client, pe ...PE) *ObjectClient[PE] {
return NewObjectClient(endpoint.Products, httpClient, pe...)
}
// QuotePropertiesEmbedder is the interface that must be implemented to
// create a client for the Quote object.
//
// Example:
//
// type MyQuoteProperties struct {
// // Embed the default properties to ensure that the custom properties are
// // added to the default ones.
// QuoteDefaultProperties
// // MyCustomProperty is a an example custom property.
// MyCustomProperty string `json:"my_custom_property,omitempty"`
// }
type QuotePropertiesEmbedder interface {
ObjectPropertiesEmbedder
EmbedQuoteProperties()
}
// NewQuoteClient returns a new client for the HubSpot API.
//
// The given HTTP client is used to make requests to the HubSpot API and must
// be configured to use the appropriate authentication method. You can use
// [NewHTTPClient] to create a new HTTP client from an OAuth2 token source.
//
// The properties type may be provided as a type param or inferred from the
// optional pe parameter. In the latter case, the given value is used only
// for type inference and has no effect on the client.
func NewQuoteClient[PE QuotePropertiesEmbedder](httpClient *http.Client, pe ...PE) *ObjectClient[PE] {
return NewObjectClient(endpoint.Quotes, httpClient, pe...)
}
// DiscountPropertiesEmbedder is the interface that must be implemented to
// create a client for the Discount object.
//
// Example:
//
// type MyDiscountProperties struct {
// // Embed the default properties to ensure that the custom properties are
// // added to the default ones.
// DiscountDefaultProperties
// // MyCustomProperty is a an example custom property.
// MyCustomProperty string `json:"my_custom_property,omitempty"`
// }
type DiscountPropertiesEmbedder interface {
ObjectPropertiesEmbedder
EmbedDiscountProperties()
}
// NewDiscountClient returns a new client for the HubSpot API.
//
// The given HTTP client is used to make requests to the HubSpot API and must
// be configured to use the appropriate authentication method. You can use
// [NewHTTPClient] to create a new HTTP client from an OAuth2 token source.
//
// The properties type may be provided as a type param or inferred from the
// optional pe parameter. In the latter case, the given value is used only
// for type inference and has no effect on the client.
func NewDiscountClient[PE DiscountPropertiesEmbedder](httpClient *http.Client, pe ...PE) *ObjectClient[PE] {
return NewObjectClient(endpoint.Discounts, httpClient, pe...)
}
// FeePropertiesEmbedder is the interface that must be implemented to
// create a client for the Fee object.
//
// Example:
//
// type MyFeeProperties struct {
// // Embed the default properties to ensure that the custom properties are
// // added to the default ones.
// FeeDefaultProperties
// // MyCustomProperty is a an example custom property.
// MyCustomProperty string `json:"my_custom_property,omitempty"`
// }
type FeePropertiesEmbedder interface {
ObjectPropertiesEmbedder
EmbedFeeProperties()
}
// NewFeeClient returns a new client for the HubSpot API.
//
// The given HTTP client is used to make requests to the HubSpot API and must
// be configured to use the appropriate authentication method. You can use
// [NewHTTPClient] to create a new HTTP client from an OAuth2 token source.
//
// The properties type may be provided as a type param or inferred from the
// optional pe parameter. In the latter case, the given value is used only
// for type inference and has no effect on the client.
func NewFeeClient[PE FeePropertiesEmbedder](httpClient *http.Client, pe ...PE) *ObjectClient[PE] {
return NewObjectClient(endpoint.Fees, httpClient, pe...)
}
// TaxPropertiesEmbedder is the interface that must be implemented to
// create a client for the Tax object.
//
// Example:
//
// type MyTaxProperties struct {
// // Embed the default properties to ensure that the custom properties are
// // added to the default ones.
// TaxDefaultProperties
// // MyCustomProperty is a an example custom property.
// MyCustomProperty string `json:"my_custom_property,omitempty"`
// }
type TaxPropertiesEmbedder interface {
ObjectPropertiesEmbedder
EmbedTaxProperties()
}
// NewTaxClient returns a new client for the HubSpot API.
//
// The given HTTP client is used to make requests to the HubSpot API and must
// be configured to use the appropriate authentication method. You can use
// [NewHTTPClient] to create a new HTTP client from an OAuth2 token source.
//
// The properties type may be provided as a type param or inferred from the
// optional pe parameter. In the latter case, the given value is used only
// for type inference and has no effect on the client.
func NewTaxClient[PE TaxPropertiesEmbedder](httpClient *http.Client, pe ...PE) *ObjectClient[PE] {
return NewObjectClient(endpoint.Taxes, httpClient, pe...)
}
// TicketPropertiesEmbedder is the interface that must be implemented to
// create a client for the Ticket object.
//
// Example:
//
// type MyTicketProperties struct {
// // Embed the default properties to ensure that the custom properties are
// // added to the default ones.
// TicketDefaultProperties
// // MyCustomProperty is a an example custom property.
// MyCustomProperty string `json:"my_custom_property,omitempty"`
// }
type TicketPropertiesEmbedder interface {
ObjectPropertiesEmbedder
EmbedTicketProperties()
}
// NewTicketClient returns a new client for the HubSpot API.
//
// The given HTTP client is used to make requests to the HubSpot API and must
// be configured to use the appropriate authentication method. You can use
// [NewHTTPClient] to create a new HTTP client from an OAuth2 token source.
//
// The properties type may be provided as a type param or inferred from the
// optional pe parameter. In the latter case, the given value is used only
// for type inference and has no effect on the client.
func NewTicketClient[PE TicketPropertiesEmbedder](httpClient *http.Client, pe ...PE) *ObjectClient[PE] {
return NewObjectClient(endpoint.Tickets, httpClient, pe...)
}
// GoalPropertiesEmbedder is the interface that must be implemented to
// create a client for the Goal object.
//
// Example:
//
// type MyGoalProperties struct {
// // Embed the default properties to ensure that the custom properties are
// // added to the default ones.
// GoalDefaultProperties
// // MyCustomProperty is a an example custom property.
// MyCustomProperty string `json:"my_custom_property,omitempty"`
// }
type GoalPropertiesEmbedder interface {
ObjectPropertiesEmbedder
EmbedGoalProperties()
}
// NewGoalClient returns a new client for the HubSpot API.
//
// The given HTTP client is used to make requests to the HubSpot API and must
// be configured to use the appropriate authentication method. You can use
// [NewHTTPClient] to create a new HTTP client from an OAuth2 token source.
//
// The properties type may be provided as a type param or inferred from the
// optional pe parameter. In the latter case, the given value is used only
// for type inference and has no effect on the client.
func NewGoalClient[PE GoalPropertiesEmbedder](httpClient *http.Client, pe ...PE) *ObjectClient[PE] {
return NewObjectClient(endpoint.Goals, httpClient, pe...)
}
// Default objects' properties embedder.
type ObjectPropertiesEmbedder interface {
embedProperties()
}