@wefunder/sdk 0.1.0-beta.1 → 0.1.0-beta.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -25,29 +25,850 @@ __export(index_exports, {
25
25
  DEFAULT_AUTHORIZE_BASE_URL: () => DEFAULT_AUTHORIZE_BASE_URL,
26
26
  DEFAULT_OAUTH_BASE_URL: () => DEFAULT_OAUTH_BASE_URL,
27
27
  DEFAULT_TOKEN_BASE_URL: () => DEFAULT_TOKEN_BASE_URL,
28
- DELIVERY_ID_HEADER: () => DELIVERY_ID_HEADER,
29
- EVENT_HEADER: () => EVENT_HEADER,
28
+ DEFAULT_TOLERANCE_SECONDS: () => DEFAULT_TOLERANCE_SECONDS,
29
+ LEGACY_DELIVERY_ID_HEADER: () => LEGACY_DELIVERY_ID_HEADER,
30
+ LEGACY_EVENT_HEADER: () => LEGACY_EVENT_HEADER,
31
+ LEGACY_SIGNATURE_HEADER: () => LEGACY_SIGNATURE_HEADER,
32
+ LEGACY_TIMESTAMP_HEADER: () => LEGACY_TIMESTAMP_HEADER,
30
33
  REQUEST_ID_HEADER: () => REQUEST_ID_HEADER,
34
+ SANDBOX_AUTHORIZE_BASE_URL: () => SANDBOX_AUTHORIZE_BASE_URL,
31
35
  SIGNATURE_HEADER: () => SIGNATURE_HEADER,
32
- TIMESTAMP_HEADER: () => TIMESTAMP_HEADER,
36
+ WebhookSignatureError: () => WebhookSignatureError,
33
37
  Wefunder: () => Wefunder,
34
38
  WefunderAuthError: () => WefunderAuthError,
35
39
  WefunderError: () => WefunderError,
40
+ checkWebhookSignature: () => checkWebhookSignature,
36
41
  clientCredentialsGrant: () => clientCredentialsGrant,
37
42
  collect: () => collect,
43
+ computeWebhookSignature: () => computeWebhookSignature,
38
44
  constructEvent: () => constructEvent,
45
+ constructEventFromRequest: () => constructEventFromRequest,
39
46
  createAuthorizationUrl: () => createAuthorizationUrl,
47
+ dispatchWebhook: () => dispatchWebhook,
40
48
  exchangeCode: () => exchangeCode,
41
49
  generatePkce: () => generatePkce,
42
50
  modeForToken: () => modeForToken,
43
51
  paginate: () => paginate,
52
+ parseSignatureHeader: () => parseSignatureHeader,
44
53
  refreshToken: () => refreshToken,
54
+ signWebhook: () => signWebhook,
45
55
  verifyWebhook: () => verifyWebhook
46
56
  });
47
57
  module.exports = __toCommonJS(index_exports);
48
58
 
49
- // src/client.ts
50
- var import_client_fetch2 = require("@hey-api/client-fetch");
59
+ // src/generated/core/bodySerializer.gen.ts
60
+ var jsonBodySerializer = {
61
+ bodySerializer: (body) => JSON.stringify(
62
+ body,
63
+ (_key, value) => typeof value === "bigint" ? value.toString() : value
64
+ )
65
+ };
66
+
67
+ // src/generated/core/params.gen.ts
68
+ var extraPrefixesMap = {
69
+ $body_: "body",
70
+ $headers_: "headers",
71
+ $path_: "path",
72
+ $query_: "query"
73
+ };
74
+ var extraPrefixes = Object.entries(extraPrefixesMap);
75
+
76
+ // src/generated/core/serverSentEvents.gen.ts
77
+ function createSseClient({
78
+ onRequest,
79
+ onSseError,
80
+ onSseEvent,
81
+ responseTransformer,
82
+ responseValidator,
83
+ sseDefaultRetryDelay,
84
+ sseMaxRetryAttempts,
85
+ sseMaxRetryDelay,
86
+ sseSleepFn,
87
+ url,
88
+ ...options
89
+ }) {
90
+ let lastEventId;
91
+ const sleep = sseSleepFn ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
92
+ const createStream = async function* () {
93
+ let retryDelay = sseDefaultRetryDelay ?? 3e3;
94
+ let attempt = 0;
95
+ const signal = options.signal ?? new AbortController().signal;
96
+ while (true) {
97
+ if (signal.aborted) break;
98
+ attempt++;
99
+ const headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers);
100
+ if (lastEventId !== void 0) {
101
+ headers.set("Last-Event-ID", lastEventId);
102
+ }
103
+ try {
104
+ const requestInit = {
105
+ redirect: "follow",
106
+ ...options,
107
+ body: options.serializedBody,
108
+ headers,
109
+ signal
110
+ };
111
+ let request = new Request(url, requestInit);
112
+ if (onRequest) {
113
+ request = await onRequest(url, requestInit);
114
+ }
115
+ const _fetch = options.fetch ?? globalThis.fetch;
116
+ const response = await _fetch(request);
117
+ if (!response.ok)
118
+ throw new Error(
119
+ `SSE failed: ${response.status} ${response.statusText}`
120
+ );
121
+ if (!response.body) throw new Error("No body in SSE response");
122
+ const reader = response.body.pipeThrough(new TextDecoderStream()).getReader();
123
+ let buffer = "";
124
+ const abortHandler = () => {
125
+ try {
126
+ reader.cancel();
127
+ } catch {
128
+ }
129
+ };
130
+ signal.addEventListener("abort", abortHandler);
131
+ try {
132
+ while (true) {
133
+ const { done, value } = await reader.read();
134
+ if (done) break;
135
+ buffer += value;
136
+ buffer = buffer.replace(/\r\n?/g, "\n");
137
+ const chunks = buffer.split("\n\n");
138
+ buffer = chunks.pop() ?? "";
139
+ for (const chunk of chunks) {
140
+ const lines = chunk.split("\n");
141
+ const dataLines = [];
142
+ let eventName;
143
+ for (const line of lines) {
144
+ if (line.startsWith("data:")) {
145
+ dataLines.push(line.replace(/^data:\s*/, ""));
146
+ } else if (line.startsWith("event:")) {
147
+ eventName = line.replace(/^event:\s*/, "");
148
+ } else if (line.startsWith("id:")) {
149
+ lastEventId = line.replace(/^id:\s*/, "");
150
+ } else if (line.startsWith("retry:")) {
151
+ const parsed = Number.parseInt(
152
+ line.replace(/^retry:\s*/, ""),
153
+ 10
154
+ );
155
+ if (!Number.isNaN(parsed)) {
156
+ retryDelay = parsed;
157
+ }
158
+ }
159
+ }
160
+ let data;
161
+ let parsedJson = false;
162
+ if (dataLines.length) {
163
+ const rawData = dataLines.join("\n");
164
+ try {
165
+ data = JSON.parse(rawData);
166
+ parsedJson = true;
167
+ } catch {
168
+ data = rawData;
169
+ }
170
+ }
171
+ if (parsedJson) {
172
+ if (responseValidator) {
173
+ await responseValidator(data);
174
+ }
175
+ if (responseTransformer) {
176
+ data = await responseTransformer(data);
177
+ }
178
+ }
179
+ onSseEvent?.({
180
+ data,
181
+ event: eventName,
182
+ id: lastEventId,
183
+ retry: retryDelay
184
+ });
185
+ if (dataLines.length) {
186
+ yield data;
187
+ }
188
+ }
189
+ }
190
+ } finally {
191
+ signal.removeEventListener("abort", abortHandler);
192
+ reader.releaseLock();
193
+ }
194
+ break;
195
+ } catch (error) {
196
+ onSseError?.(error);
197
+ if (sseMaxRetryAttempts !== void 0 && attempt >= sseMaxRetryAttempts) {
198
+ break;
199
+ }
200
+ const backoff = Math.min(
201
+ retryDelay * 2 ** (attempt - 1),
202
+ sseMaxRetryDelay ?? 3e4
203
+ );
204
+ await sleep(backoff);
205
+ }
206
+ }
207
+ };
208
+ const stream = createStream();
209
+ return { stream };
210
+ }
211
+
212
+ // src/generated/core/pathSerializer.gen.ts
213
+ var separatorArrayExplode = (style) => {
214
+ switch (style) {
215
+ case "label":
216
+ return ".";
217
+ case "matrix":
218
+ return ";";
219
+ case "simple":
220
+ return ",";
221
+ default:
222
+ return "&";
223
+ }
224
+ };
225
+ var separatorArrayNoExplode = (style) => {
226
+ switch (style) {
227
+ case "form":
228
+ return ",";
229
+ case "pipeDelimited":
230
+ return "|";
231
+ case "spaceDelimited":
232
+ return "%20";
233
+ default:
234
+ return ",";
235
+ }
236
+ };
237
+ var separatorObjectExplode = (style) => {
238
+ switch (style) {
239
+ case "label":
240
+ return ".";
241
+ case "matrix":
242
+ return ";";
243
+ case "simple":
244
+ return ",";
245
+ default:
246
+ return "&";
247
+ }
248
+ };
249
+ var serializeArrayParam = ({
250
+ allowReserved,
251
+ explode,
252
+ name,
253
+ style,
254
+ value
255
+ }) => {
256
+ if (!explode) {
257
+ const joinedValues2 = (allowReserved ? value : value.map((v) => encodeURIComponent(v))).join(separatorArrayNoExplode(style));
258
+ switch (style) {
259
+ case "label":
260
+ return `.${joinedValues2}`;
261
+ case "matrix":
262
+ return `;${name}=${joinedValues2}`;
263
+ case "simple":
264
+ return joinedValues2;
265
+ default:
266
+ return `${name}=${joinedValues2}`;
267
+ }
268
+ }
269
+ const separator = separatorArrayExplode(style);
270
+ const joinedValues = value.map((v) => {
271
+ if (style === "label" || style === "simple") {
272
+ return allowReserved ? v : encodeURIComponent(v);
273
+ }
274
+ return serializePrimitiveParam({
275
+ allowReserved,
276
+ name,
277
+ value: v
278
+ });
279
+ }).join(separator);
280
+ return style === "label" || style === "matrix" ? separator + joinedValues : joinedValues;
281
+ };
282
+ var serializePrimitiveParam = ({
283
+ allowReserved,
284
+ name,
285
+ value
286
+ }) => {
287
+ if (value === void 0 || value === null) {
288
+ return "";
289
+ }
290
+ if (typeof value === "object") {
291
+ throw new Error(
292
+ "Deeply-nested arrays/objects aren\u2019t supported. Provide your own `querySerializer()` to handle these."
293
+ );
294
+ }
295
+ return `${name}=${allowReserved ? value : encodeURIComponent(value)}`;
296
+ };
297
+ var serializeObjectParam = ({
298
+ allowReserved,
299
+ explode,
300
+ name,
301
+ style,
302
+ value,
303
+ valueOnly
304
+ }) => {
305
+ if (value instanceof Date) {
306
+ return valueOnly ? value.toISOString() : `${name}=${value.toISOString()}`;
307
+ }
308
+ if (style !== "deepObject" && !explode) {
309
+ let values = [];
310
+ Object.entries(value).forEach(([key, v]) => {
311
+ values = [
312
+ ...values,
313
+ key,
314
+ allowReserved ? v : encodeURIComponent(v)
315
+ ];
316
+ });
317
+ const joinedValues2 = values.join(",");
318
+ switch (style) {
319
+ case "form":
320
+ return `${name}=${joinedValues2}`;
321
+ case "label":
322
+ return `.${joinedValues2}`;
323
+ case "matrix":
324
+ return `;${name}=${joinedValues2}`;
325
+ default:
326
+ return joinedValues2;
327
+ }
328
+ }
329
+ const separator = separatorObjectExplode(style);
330
+ const joinedValues = Object.entries(value).map(
331
+ ([key, v]) => serializePrimitiveParam({
332
+ allowReserved,
333
+ name: style === "deepObject" ? `${name}[${key}]` : key,
334
+ value: v
335
+ })
336
+ ).join(separator);
337
+ return style === "label" || style === "matrix" ? separator + joinedValues : joinedValues;
338
+ };
339
+
340
+ // src/generated/core/utils.gen.ts
341
+ var PATH_PARAM_RE = /\{[^{}]+\}/g;
342
+ var defaultPathSerializer = ({
343
+ path,
344
+ url: _url
345
+ }) => {
346
+ let url = _url;
347
+ const matches = _url.match(PATH_PARAM_RE);
348
+ if (matches) {
349
+ for (const match of matches) {
350
+ let explode = false;
351
+ let name = match.substring(1, match.length - 1);
352
+ let style = "simple";
353
+ if (name.endsWith("*")) {
354
+ explode = true;
355
+ name = name.substring(0, name.length - 1);
356
+ }
357
+ if (name.startsWith(".")) {
358
+ name = name.substring(1);
359
+ style = "label";
360
+ } else if (name.startsWith(";")) {
361
+ name = name.substring(1);
362
+ style = "matrix";
363
+ }
364
+ const value = path[name];
365
+ if (value === void 0 || value === null) {
366
+ continue;
367
+ }
368
+ if (Array.isArray(value)) {
369
+ url = url.replace(
370
+ match,
371
+ serializeArrayParam({ explode, name, style, value })
372
+ );
373
+ continue;
374
+ }
375
+ if (typeof value === "object") {
376
+ url = url.replace(
377
+ match,
378
+ serializeObjectParam({
379
+ explode,
380
+ name,
381
+ style,
382
+ value,
383
+ valueOnly: true
384
+ })
385
+ );
386
+ continue;
387
+ }
388
+ if (style === "matrix") {
389
+ url = url.replace(
390
+ match,
391
+ `;${serializePrimitiveParam({
392
+ name,
393
+ value
394
+ })}`
395
+ );
396
+ continue;
397
+ }
398
+ const replaceValue = encodeURIComponent(
399
+ style === "label" ? `.${value}` : value
400
+ );
401
+ url = url.replace(match, replaceValue);
402
+ }
403
+ }
404
+ return url;
405
+ };
406
+ var getUrl = ({
407
+ baseUrl,
408
+ path,
409
+ query,
410
+ querySerializer,
411
+ url: _url
412
+ }) => {
413
+ const pathUrl = _url.startsWith("/") ? _url : `/${_url}`;
414
+ let url = (baseUrl ?? "") + pathUrl;
415
+ if (path) {
416
+ url = defaultPathSerializer({ path, url });
417
+ }
418
+ let search = query ? querySerializer(query) : "";
419
+ if (search.startsWith("?")) {
420
+ search = search.substring(1);
421
+ }
422
+ if (search) {
423
+ url += `?${search}`;
424
+ }
425
+ return url;
426
+ };
427
+ function getValidRequestBody(options) {
428
+ const hasBody = options.body !== void 0;
429
+ const isSerializedBody = hasBody && options.bodySerializer;
430
+ if (isSerializedBody) {
431
+ if ("serializedBody" in options) {
432
+ const hasSerializedBody = options.serializedBody !== void 0 && options.serializedBody !== "";
433
+ return hasSerializedBody ? options.serializedBody : null;
434
+ }
435
+ return options.body !== "" ? options.body : null;
436
+ }
437
+ if (hasBody) {
438
+ return options.body;
439
+ }
440
+ return void 0;
441
+ }
442
+
443
+ // src/generated/core/auth.gen.ts
444
+ var getAuthToken = async (auth, callback) => {
445
+ const token = typeof callback === "function" ? await callback(auth) : callback;
446
+ if (!token) {
447
+ return;
448
+ }
449
+ if (auth.scheme === "bearer") {
450
+ return `Bearer ${token}`;
451
+ }
452
+ if (auth.scheme === "basic") {
453
+ return `Basic ${btoa(token)}`;
454
+ }
455
+ return token;
456
+ };
457
+
458
+ // src/generated/client/utils.gen.ts
459
+ var createQuerySerializer = ({
460
+ parameters = {},
461
+ ...args
462
+ } = {}) => {
463
+ const querySerializer = (queryParams) => {
464
+ const search = [];
465
+ if (queryParams && typeof queryParams === "object") {
466
+ for (const name in queryParams) {
467
+ const value = queryParams[name];
468
+ if (value === void 0 || value === null) {
469
+ continue;
470
+ }
471
+ const options = parameters[name] || args;
472
+ if (Array.isArray(value)) {
473
+ const serializedArray = serializeArrayParam({
474
+ allowReserved: options.allowReserved,
475
+ explode: true,
476
+ name,
477
+ style: "form",
478
+ value,
479
+ ...options.array
480
+ });
481
+ if (serializedArray) search.push(serializedArray);
482
+ } else if (typeof value === "object") {
483
+ const serializedObject = serializeObjectParam({
484
+ allowReserved: options.allowReserved,
485
+ explode: true,
486
+ name,
487
+ style: "deepObject",
488
+ value,
489
+ ...options.object
490
+ });
491
+ if (serializedObject) search.push(serializedObject);
492
+ } else {
493
+ const serializedPrimitive = serializePrimitiveParam({
494
+ allowReserved: options.allowReserved,
495
+ name,
496
+ value
497
+ });
498
+ if (serializedPrimitive) search.push(serializedPrimitive);
499
+ }
500
+ }
501
+ }
502
+ return search.join("&");
503
+ };
504
+ return querySerializer;
505
+ };
506
+ var getParseAs = (contentType) => {
507
+ if (!contentType) {
508
+ return "stream";
509
+ }
510
+ const cleanContent = contentType.split(";")[0]?.trim();
511
+ if (!cleanContent) {
512
+ return;
513
+ }
514
+ if (cleanContent.startsWith("application/json") || cleanContent.endsWith("+json")) {
515
+ return "json";
516
+ }
517
+ if (cleanContent === "multipart/form-data") {
518
+ return "formData";
519
+ }
520
+ if (["application/", "audio/", "image/", "video/"].some(
521
+ (type) => cleanContent.startsWith(type)
522
+ )) {
523
+ return "blob";
524
+ }
525
+ if (cleanContent.startsWith("text/")) {
526
+ return "text";
527
+ }
528
+ return;
529
+ };
530
+ var checkForExistence = (options, name) => {
531
+ if (!name) {
532
+ return false;
533
+ }
534
+ if (options.headers.has(name) || options.query?.[name] || options.headers.get("Cookie")?.includes(`${name}=`)) {
535
+ return true;
536
+ }
537
+ return false;
538
+ };
539
+ async function setAuthParams(options) {
540
+ for (const auth of options.security ?? []) {
541
+ if (checkForExistence(options, auth.name)) {
542
+ continue;
543
+ }
544
+ const token = await getAuthToken(auth, options.auth);
545
+ if (!token) {
546
+ continue;
547
+ }
548
+ const name = auth.name ?? "Authorization";
549
+ switch (auth.in) {
550
+ case "query":
551
+ if (!options.query) {
552
+ options.query = {};
553
+ }
554
+ options.query[name] = token;
555
+ break;
556
+ case "cookie":
557
+ options.headers.append("Cookie", `${name}=${token}`);
558
+ break;
559
+ case "header":
560
+ default:
561
+ options.headers.set(name, token);
562
+ break;
563
+ }
564
+ }
565
+ }
566
+ var buildUrl = (options) => getUrl({
567
+ baseUrl: options.baseUrl,
568
+ path: options.path,
569
+ query: options.query,
570
+ querySerializer: typeof options.querySerializer === "function" ? options.querySerializer : createQuerySerializer(options.querySerializer),
571
+ url: options.url
572
+ });
573
+ var mergeConfigs = (a, b) => {
574
+ const config = { ...a, ...b };
575
+ if (config.baseUrl?.endsWith("/")) {
576
+ config.baseUrl = config.baseUrl.substring(0, config.baseUrl.length - 1);
577
+ }
578
+ config.headers = mergeHeaders(a.headers, b.headers);
579
+ return config;
580
+ };
581
+ var headersEntries = (headers) => {
582
+ const entries = [];
583
+ headers.forEach((value, key) => {
584
+ entries.push([key, value]);
585
+ });
586
+ return entries;
587
+ };
588
+ var mergeHeaders = (...headers) => {
589
+ const mergedHeaders = new Headers();
590
+ for (const header of headers) {
591
+ if (!header) {
592
+ continue;
593
+ }
594
+ const iterator = header instanceof Headers ? headersEntries(header) : Object.entries(header);
595
+ for (const [key, value] of iterator) {
596
+ if (value === null) {
597
+ mergedHeaders.delete(key);
598
+ } else if (Array.isArray(value)) {
599
+ for (const v of value) {
600
+ mergedHeaders.append(key, v);
601
+ }
602
+ } else if (value !== void 0) {
603
+ mergedHeaders.set(
604
+ key,
605
+ typeof value === "object" ? JSON.stringify(value) : value
606
+ );
607
+ }
608
+ }
609
+ }
610
+ return mergedHeaders;
611
+ };
612
+ var Interceptors = class {
613
+ fns = [];
614
+ clear() {
615
+ this.fns = [];
616
+ }
617
+ eject(id) {
618
+ const index = this.getInterceptorIndex(id);
619
+ if (this.fns[index]) {
620
+ this.fns[index] = null;
621
+ }
622
+ }
623
+ exists(id) {
624
+ const index = this.getInterceptorIndex(id);
625
+ return Boolean(this.fns[index]);
626
+ }
627
+ getInterceptorIndex(id) {
628
+ if (typeof id === "number") {
629
+ return this.fns[id] ? id : -1;
630
+ }
631
+ return this.fns.indexOf(id);
632
+ }
633
+ update(id, fn) {
634
+ const index = this.getInterceptorIndex(id);
635
+ if (this.fns[index]) {
636
+ this.fns[index] = fn;
637
+ return id;
638
+ }
639
+ return false;
640
+ }
641
+ use(fn) {
642
+ this.fns.push(fn);
643
+ return this.fns.length - 1;
644
+ }
645
+ };
646
+ var createInterceptors = () => ({
647
+ error: new Interceptors(),
648
+ request: new Interceptors(),
649
+ response: new Interceptors()
650
+ });
651
+ var defaultQuerySerializer = createQuerySerializer({
652
+ allowReserved: false,
653
+ array: {
654
+ explode: true,
655
+ style: "form"
656
+ },
657
+ object: {
658
+ explode: true,
659
+ style: "deepObject"
660
+ }
661
+ });
662
+ var defaultHeaders = {
663
+ "Content-Type": "application/json"
664
+ };
665
+ var createConfig = (override = {}) => ({
666
+ ...jsonBodySerializer,
667
+ headers: defaultHeaders,
668
+ parseAs: "auto",
669
+ querySerializer: defaultQuerySerializer,
670
+ ...override
671
+ });
672
+
673
+ // src/generated/client/client.gen.ts
674
+ var createClient = (config = {}) => {
675
+ let _config = mergeConfigs(createConfig(), config);
676
+ const getConfig = () => ({ ..._config });
677
+ const setConfig = (config2) => {
678
+ _config = mergeConfigs(_config, config2);
679
+ return getConfig();
680
+ };
681
+ const interceptors = createInterceptors();
682
+ const beforeRequest = async (options) => {
683
+ const opts = {
684
+ ..._config,
685
+ ...options,
686
+ fetch: options.fetch ?? _config.fetch ?? globalThis.fetch,
687
+ headers: mergeHeaders(_config.headers, options.headers),
688
+ serializedBody: void 0
689
+ };
690
+ if (opts.security) {
691
+ await setAuthParams(opts);
692
+ }
693
+ if (opts.requestValidator) {
694
+ await opts.requestValidator(opts);
695
+ }
696
+ if (opts.body !== void 0 && opts.bodySerializer) {
697
+ opts.serializedBody = opts.bodySerializer(opts.body);
698
+ }
699
+ if (opts.body === void 0 || opts.serializedBody === "") {
700
+ opts.headers.delete("Content-Type");
701
+ }
702
+ const resolvedOpts = opts;
703
+ const url = buildUrl(resolvedOpts);
704
+ return { opts: resolvedOpts, url };
705
+ };
706
+ const request = async (options) => {
707
+ const throwOnError = options.throwOnError ?? _config.throwOnError;
708
+ const responseStyle = options.responseStyle ?? _config.responseStyle;
709
+ let request2;
710
+ let response;
711
+ try {
712
+ const { opts, url } = await beforeRequest(options);
713
+ const requestInit = {
714
+ redirect: "follow",
715
+ ...opts,
716
+ body: getValidRequestBody(opts)
717
+ };
718
+ request2 = new Request(url, requestInit);
719
+ for (const fn of interceptors.request.fns) {
720
+ if (fn) {
721
+ request2 = await fn(request2, opts);
722
+ }
723
+ }
724
+ const _fetch = opts.fetch;
725
+ response = await _fetch(request2);
726
+ for (const fn of interceptors.response.fns) {
727
+ if (fn) {
728
+ response = await fn(response, request2, opts);
729
+ }
730
+ }
731
+ const result = {
732
+ request: request2,
733
+ response
734
+ };
735
+ if (response.ok) {
736
+ const parseAs = (opts.parseAs === "auto" ? getParseAs(response.headers.get("Content-Type")) : opts.parseAs) ?? "json";
737
+ if (response.status === 204 || response.headers.get("Content-Length") === "0") {
738
+ let emptyData;
739
+ switch (parseAs) {
740
+ case "arrayBuffer":
741
+ case "blob":
742
+ case "text":
743
+ emptyData = await response[parseAs]();
744
+ break;
745
+ case "formData":
746
+ emptyData = new FormData();
747
+ break;
748
+ case "stream":
749
+ emptyData = response.body;
750
+ break;
751
+ case "json":
752
+ default:
753
+ emptyData = {};
754
+ break;
755
+ }
756
+ return opts.responseStyle === "data" ? emptyData : {
757
+ data: emptyData,
758
+ ...result
759
+ };
760
+ }
761
+ let data;
762
+ switch (parseAs) {
763
+ case "arrayBuffer":
764
+ case "blob":
765
+ case "formData":
766
+ case "text":
767
+ data = await response[parseAs]();
768
+ break;
769
+ case "json": {
770
+ const text = await response.text();
771
+ data = text ? JSON.parse(text) : {};
772
+ break;
773
+ }
774
+ case "stream":
775
+ return opts.responseStyle === "data" ? response.body : {
776
+ data: response.body,
777
+ ...result
778
+ };
779
+ }
780
+ if (parseAs === "json") {
781
+ if (opts.responseValidator) {
782
+ await opts.responseValidator(data);
783
+ }
784
+ if (opts.responseTransformer) {
785
+ data = await opts.responseTransformer(data);
786
+ }
787
+ }
788
+ return opts.responseStyle === "data" ? data : {
789
+ data,
790
+ ...result
791
+ };
792
+ }
793
+ const textError = await response.text();
794
+ let jsonError;
795
+ try {
796
+ jsonError = JSON.parse(textError);
797
+ } catch {
798
+ }
799
+ throw jsonError ?? textError;
800
+ } catch (error) {
801
+ let finalError = error;
802
+ for (const fn of interceptors.error.fns) {
803
+ if (fn) {
804
+ finalError = await fn(
805
+ finalError,
806
+ response,
807
+ request2,
808
+ options
809
+ );
810
+ }
811
+ }
812
+ finalError = finalError || {};
813
+ if (throwOnError) {
814
+ throw finalError;
815
+ }
816
+ return responseStyle === "data" ? void 0 : {
817
+ error: finalError,
818
+ request: request2,
819
+ response
820
+ };
821
+ }
822
+ };
823
+ const makeMethodFn = (method) => (options) => request({ ...options, method });
824
+ const makeSseFn = (method) => async (options) => {
825
+ const { opts, url } = await beforeRequest(options);
826
+ return createSseClient({
827
+ ...opts,
828
+ body: opts.body,
829
+ method,
830
+ onRequest: async (url2, init) => {
831
+ let request2 = new Request(url2, init);
832
+ for (const fn of interceptors.request.fns) {
833
+ if (fn) {
834
+ request2 = await fn(request2, opts);
835
+ }
836
+ }
837
+ return request2;
838
+ },
839
+ serializedBody: getValidRequestBody(opts),
840
+ url
841
+ });
842
+ };
843
+ const _buildUrl = (options) => buildUrl({ ..._config, ...options });
844
+ return {
845
+ buildUrl: _buildUrl,
846
+ connect: makeMethodFn("CONNECT"),
847
+ delete: makeMethodFn("DELETE"),
848
+ get: makeMethodFn("GET"),
849
+ getConfig,
850
+ head: makeMethodFn("HEAD"),
851
+ interceptors,
852
+ options: makeMethodFn("OPTIONS"),
853
+ patch: makeMethodFn("PATCH"),
854
+ post: makeMethodFn("POST"),
855
+ put: makeMethodFn("PUT"),
856
+ request,
857
+ setConfig,
858
+ sse: {
859
+ connect: makeSseFn("CONNECT"),
860
+ delete: makeSseFn("DELETE"),
861
+ get: makeSseFn("GET"),
862
+ head: makeSseFn("HEAD"),
863
+ options: makeSseFn("OPTIONS"),
864
+ patch: makeSseFn("PATCH"),
865
+ post: makeSseFn("POST"),
866
+ put: makeSseFn("PUT"),
867
+ trace: makeSseFn("TRACE")
868
+ },
869
+ trace: makeMethodFn("TRACE")
870
+ };
871
+ };
51
872
 
52
873
  // src/http.ts
53
874
  var IDEMPOTENT = /* @__PURE__ */ new Set(["GET", "HEAD", "OPTIONS"]);
@@ -69,13 +890,6 @@ function backoffMs(attempt, opts, random) {
69
890
  const jitter = exp * 0.5 * random();
70
891
  return Math.min(exp + jitter, opts.maxDelayMs);
71
892
  }
72
- function withBearer(input, init, token) {
73
- const headers = new Headers(
74
- init?.headers ?? (input instanceof Request ? input.headers : void 0)
75
- );
76
- headers.set("Authorization", `Bearer ${token}`);
77
- return { ...init, headers };
78
- }
79
893
  function createFetch(deps) {
80
894
  const baseFetch = deps.fetch ?? fetch;
81
895
  const sleep = deps.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
@@ -89,21 +903,37 @@ function createFetch(deps) {
89
903
  return async function wrappedFetch(input, init) {
90
904
  const method = methodOf(input, init);
91
905
  const idempotent = IDEMPOTENT.has(method);
906
+ const isRequest = input instanceof Request;
92
907
  let refreshed = false;
93
908
  let attempt = 0;
909
+ let retryToken;
910
+ const dispatch = (authToken) => {
911
+ if (isRequest) {
912
+ const fresh = input.clone();
913
+ if (authToken === void 0) return baseFetch(fresh);
914
+ const headers = new Headers(fresh.headers);
915
+ headers.set("Authorization", `Bearer ${authToken}`);
916
+ return baseFetch(new Request(fresh, { headers }));
917
+ }
918
+ const nextInit = authToken === void 0 ? init : (() => {
919
+ const headers = new Headers(init?.headers);
920
+ headers.set("Authorization", `Bearer ${authToken}`);
921
+ return { ...init, headers };
922
+ })();
923
+ return baseFetch(input, nextInit);
924
+ };
94
925
  for (; ; ) {
95
926
  let response;
96
927
  let networkError;
97
928
  try {
98
- response = await baseFetch(input, init);
929
+ response = await dispatch(retryToken);
99
930
  } catch (err) {
100
931
  networkError = err;
101
932
  }
102
- const replayable = !(input instanceof Request && input.bodyUsed);
103
- if (response?.status === 401 && !refreshed && replayable && deps.tokenManager?.canRefresh) {
933
+ if (response?.status === 401 && !refreshed && deps.tokenManager?.canRefresh) {
104
934
  refreshed = true;
105
935
  const next = await deps.tokenManager.refresh();
106
- init = withBearer(input, init, next.accessToken);
936
+ retryToken = next.accessToken;
107
937
  continue;
108
938
  }
109
939
  if (response?.status === 429 && attempt < retry.maxRetries) {
@@ -126,10 +956,11 @@ function createFetch(deps) {
126
956
  // src/oauth.ts
127
957
  var import_node_crypto = require("crypto");
128
958
  var DEFAULT_AUTHORIZE_BASE_URL = "https://wefunder.com/oauth";
129
- var DEFAULT_TOKEN_BASE_URL = "https://wefunder.com/oauth";
959
+ var SANDBOX_AUTHORIZE_BASE_URL = "https://oauth.wefunder-sandbox.com/oauth";
960
+ var DEFAULT_TOKEN_BASE_URL = "https://api.wefunder.com/oauth";
130
961
  var DEFAULT_OAUTH_BASE_URL = DEFAULT_AUTHORIZE_BASE_URL;
131
- function resolveAuthorizeBase(o) {
132
- return o.authorizeBaseUrl ?? o.oauthBaseUrl ?? DEFAULT_AUTHORIZE_BASE_URL;
962
+ function defaultAuthorizeBase(clientId) {
963
+ return clientId.startsWith("pk_test_") ? SANDBOX_AUTHORIZE_BASE_URL : DEFAULT_AUTHORIZE_BASE_URL;
133
964
  }
134
965
  function resolveTokenBase(o) {
135
966
  return o.tokenBaseUrl ?? o.oauthBaseUrl ?? DEFAULT_TOKEN_BASE_URL;
@@ -169,7 +1000,7 @@ function generatePkce() {
169
1000
  return { codeVerifier, codeChallenge, codeChallengeMethod: "S256" };
170
1001
  }
171
1002
  function createAuthorizationUrl(opts) {
172
- const base = resolveAuthorizeBase(opts);
1003
+ const base = opts.authorizeBaseUrl ?? opts.oauthBaseUrl ?? defaultAuthorizeBase(opts.clientId);
173
1004
  const q = new URLSearchParams({
174
1005
  response_type: "code",
175
1006
  client_id: opts.clientId,
@@ -357,21 +1188,36 @@ var sdk_gen_exports = {};
357
1188
  __export(sdk_gen_exports, {
358
1189
  approveSyndicateMember: () => approveSyndicateMember,
359
1190
  closeSyndicateDeal: () => closeSyndicateDeal,
1191
+ createInstallation: () => createInstallation,
1192
+ createInstallationToken: () => createInstallationToken,
360
1193
  createIntent: () => createIntent,
361
1194
  createPartnerInvite: () => createPartnerInvite,
1195
+ createWebhookEndpoint: () => createWebhookEndpoint,
362
1196
  createWebhookSubscription: () => createWebhookSubscription,
1197
+ deleteWebhookEndpoint: () => deleteWebhookEndpoint,
363
1198
  deleteWebhookSubscription: () => deleteWebhookSubscription,
364
1199
  demoteSyndicateMember: () => demoteSyndicateMember,
365
1200
  exportSyndicateMembersCsv: () => exportSyndicateMembersCsv,
366
1201
  finalizeSyndicateDeal: () => finalizeSyndicateDeal,
1202
+ followCompany: () => followCompany,
367
1203
  getAttributionMe: () => getAttributionMe,
368
1204
  getAttributionStats: () => getAttributionStats,
1205
+ getCompany: () => getCompany,
1206
+ getCompanyDisclosures: () => getCompanyDisclosures,
1207
+ getCompanyPitch: () => getCompanyPitch,
1208
+ getCompanyUpdate: () => getCompanyUpdate,
369
1209
  getCurrentUser: () => getCurrentUser,
1210
+ getInstallation: () => getInstallation,
370
1211
  getIntent: () => getIntent,
1212
+ getInvestment: () => getInvestment,
371
1213
  getOffering: () => getOffering,
1214
+ getOfferingStats: () => getOfferingStats,
1215
+ getPortfolio: () => getPortfolio,
372
1216
  getSyndicate: () => getSyndicate,
373
1217
  getSyndicateDeal: () => getSyndicateDeal,
1218
+ getSyndicatePortfolio: () => getSyndicatePortfolio,
374
1219
  getSyndicateStatistics: () => getSyndicateStatistics,
1220
+ getWebhookEndpoint: () => getWebhookEndpoint,
375
1221
  getWebhookSubscription: () => getWebhookSubscription,
376
1222
  hideSyndicateMember: () => hideSyndicateMember,
377
1223
  inviteSyndicateMember: () => inviteSyndicateMember,
@@ -379,19 +1225,31 @@ __export(sdk_gen_exports, {
379
1225
  listAttributedInvestments: () => listAttributedInvestments,
380
1226
  listAttributionCampaigns: () => listAttributionCampaigns,
381
1227
  listCampaigns: () => listCampaigns,
1228
+ listCompanyInvestmentChanges: () => listCompanyInvestmentChanges,
1229
+ listCompanyQuestions: () => listCompanyQuestions,
1230
+ listCompanyUpdates: () => listCompanyUpdates,
382
1231
  listConnectedApps: () => listConnectedApps,
1232
+ listEligibleInstallTargets: () => listEligibleInstallTargets,
1233
+ listFollowedCompanies: () => listFollowedCompanies,
1234
+ listInstallations: () => listInstallations,
383
1235
  listIntents: () => listIntents,
384
1236
  listInvestments: () => listInvestments,
1237
+ listMyCompanies: () => listMyCompanies,
385
1238
  listOfferings: () => listOfferings,
386
1239
  listPartnerInvites: () => listPartnerInvites,
1240
+ listPortfolioPositions: () => listPortfolioPositions,
387
1241
  listSyndicateDealInvestors: () => listSyndicateDealInvestors,
388
1242
  listSyndicateDeals: () => listSyndicateDeals,
389
1243
  listSyndicateMemberInvestments: () => listSyndicateMemberInvestments,
390
1244
  listSyndicateMembers: () => listSyndicateMembers,
1245
+ listSyndicatePortfolioPositions: () => listSyndicatePortfolioPositions,
391
1246
  listSyndicates: () => listSyndicates,
1247
+ listWebhookEndpoints: () => listWebhookEndpoints,
392
1248
  listWebhookSubscriptions: () => listWebhookSubscriptions,
1249
+ previewIntent: () => previewIntent,
393
1250
  promoteSyndicateMember: () => promoteSyndicateMember,
394
1251
  reactivateWebhookSubscription: () => reactivateWebhookSubscription,
1252
+ reenableWebhookEndpoint: () => reenableWebhookEndpoint,
395
1253
  regenerateWebhookSecret: () => regenerateWebhookSecret,
396
1254
  registerAsPartner: () => registerAsPartner,
397
1255
  removeSyndicateMember: () => removeSyndicateMember,
@@ -399,628 +1257,500 @@ __export(sdk_gen_exports, {
399
1257
  resendSyndicateInvite: () => resendSyndicateInvite,
400
1258
  restoreSyndicateMember: () => restoreSyndicateMember,
401
1259
  revokeConnectedApp: () => revokeConnectedApp,
1260
+ revokeInstallation: () => revokeInstallation,
402
1261
  revokePartnerInvite: () => revokePartnerInvite,
1262
+ rotateWebhookEndpointSecret: () => rotateWebhookEndpointSecret,
1263
+ searchCompanies: () => searchCompanies,
1264
+ testWebhookEndpoint: () => testWebhookEndpoint,
403
1265
  testWebhookSubscription: () => testWebhookSubscription,
1266
+ unfollowCompany: () => unfollowCompany,
404
1267
  updateSyndicate: () => updateSyndicate,
405
- updateSyndicateMember: () => updateSyndicateMember
1268
+ updateSyndicateMember: () => updateSyndicateMember,
1269
+ updateWebhookEndpoint: () => updateWebhookEndpoint
406
1270
  });
407
1271
 
408
1272
  // src/generated/client.gen.ts
409
- var import_client_fetch = require("@hey-api/client-fetch");
410
- var client = (0, import_client_fetch.createClient)((0, import_client_fetch.createConfig)());
1273
+ var client = createClient(
1274
+ createConfig({ baseUrl: "https://api.wefunder.com" })
1275
+ );
411
1276
 
412
1277
  // src/generated/sdk.gen.ts
413
- var listOfferings = (options) => {
414
- return (options?.client ?? client).get({
415
- security: [
416
- {
417
- scheme: "bearer",
418
- type: "http"
419
- }
420
- ],
421
- url: "/explore",
422
- ...options
423
- });
424
- };
425
- var getOffering = (options) => {
426
- return (options.client ?? client).get({
427
- security: [
428
- {
429
- scheme: "bearer",
430
- type: "http"
431
- }
432
- ],
433
- url: "/offerings/{external_id}",
434
- ...options
435
- });
436
- };
437
- var getCurrentUser = (options) => {
438
- return (options?.client ?? client).get({
439
- security: [
440
- {
441
- scheme: "bearer",
442
- type: "http"
443
- }
444
- ],
445
- url: "/users/me",
446
- ...options
447
- });
448
- };
449
- var listInvestments = (options) => {
450
- return (options?.client ?? client).get({
451
- security: [
452
- {
453
- scheme: "bearer",
454
- type: "http"
455
- }
456
- ],
457
- url: "/investments",
458
- ...options
459
- });
460
- };
461
- var listCampaigns = (options) => {
462
- return (options?.client ?? client).get({
463
- security: [
464
- {
465
- scheme: "bearer",
466
- type: "http"
467
- }
468
- ],
469
- url: "/campaigns",
470
- ...options
471
- });
472
- };
473
- var listSyndicates = (options) => {
474
- return (options?.client ?? client).get({
475
- security: [
476
- {
477
- scheme: "bearer",
478
- type: "http"
479
- }
480
- ],
481
- url: "/syndicates",
482
- ...options
483
- });
484
- };
485
- var getSyndicate = (options) => {
486
- return (options.client ?? client).get({
487
- security: [
488
- {
489
- scheme: "bearer",
490
- type: "http"
491
- }
492
- ],
493
- url: "/syndicates/{syndicate_id}",
494
- ...options
495
- });
496
- };
497
- var updateSyndicate = (options) => {
498
- return (options.client ?? client).patch({
499
- security: [
500
- {
501
- scheme: "bearer",
502
- type: "http"
503
- }
504
- ],
505
- url: "/syndicates/{syndicate_id}",
506
- ...options,
507
- headers: {
508
- "Content-Type": "application/json",
509
- ...options?.headers
510
- }
511
- });
512
- };
513
- var listSyndicateMembers = (options) => {
514
- return (options.client ?? client).get({
515
- security: [
516
- {
517
- scheme: "bearer",
518
- type: "http"
519
- }
520
- ],
521
- url: "/syndicates/{syndicate_id}/members",
522
- ...options
523
- });
524
- };
525
- var inviteSyndicateMember = (options) => {
526
- return (options.client ?? client).post({
527
- security: [
528
- {
529
- scheme: "bearer",
530
- type: "http"
531
- }
532
- ],
533
- url: "/syndicates/{syndicate_id}/members/invite",
534
- ...options,
535
- headers: {
536
- "Content-Type": "application/json",
537
- ...options?.headers
538
- }
539
- });
540
- };
541
- var removeSyndicateMember = (options) => {
542
- return (options.client ?? client).delete({
543
- security: [
544
- {
545
- scheme: "bearer",
546
- type: "http"
547
- }
548
- ],
549
- url: "/syndicates/{syndicate_id}/members/{member_id}",
550
- ...options
551
- });
552
- };
553
- var updateSyndicateMember = (options) => {
554
- return (options.client ?? client).patch({
555
- security: [
556
- {
557
- scheme: "bearer",
558
- type: "http"
559
- }
560
- ],
561
- url: "/syndicates/{syndicate_id}/members/{member_id}",
562
- ...options,
563
- headers: {
564
- "Content-Type": "application/json",
565
- ...options?.headers
566
- }
567
- });
568
- };
569
- var approveSyndicateMember = (options) => {
570
- return (options.client ?? client).post({
571
- security: [
572
- {
573
- scheme: "bearer",
574
- type: "http"
575
- }
576
- ],
577
- url: "/syndicates/{syndicate_id}/members/{member_id}/approve",
578
- ...options
579
- });
580
- };
581
- var hideSyndicateMember = (options) => {
582
- return (options.client ?? client).post({
583
- security: [
584
- {
585
- scheme: "bearer",
586
- type: "http"
587
- }
588
- ],
589
- url: "/syndicates/{syndicate_id}/members/{member_id}/hide",
590
- ...options
591
- });
592
- };
593
- var promoteSyndicateMember = (options) => {
594
- return (options.client ?? client).post({
595
- security: [
596
- {
597
- scheme: "bearer",
598
- type: "http"
599
- }
600
- ],
601
- url: "/syndicates/{syndicate_id}/members/{member_id}/promote",
602
- ...options
603
- });
604
- };
605
- var demoteSyndicateMember = (options) => {
606
- return (options.client ?? client).post({
607
- security: [
608
- {
609
- scheme: "bearer",
610
- type: "http"
611
- }
612
- ],
613
- url: "/syndicates/{syndicate_id}/members/{member_id}/demote",
614
- ...options
615
- });
616
- };
617
- var restoreSyndicateMember = (options) => {
618
- return (options.client ?? client).post({
619
- security: [
620
- {
621
- scheme: "bearer",
622
- type: "http"
623
- }
624
- ],
625
- url: "/syndicates/{syndicate_id}/members/{member_id}/restore",
626
- ...options
627
- });
628
- };
629
- var resendSyndicateInvite = (options) => {
630
- return (options.client ?? client).post({
631
- security: [
632
- {
633
- scheme: "bearer",
634
- type: "http"
635
- }
636
- ],
637
- url: "/syndicates/{syndicate_id}/members/{member_id}/resend_invite",
638
- ...options
639
- });
640
- };
641
- var reorderSyndicateMembers = (options) => {
642
- return (options.client ?? client).post({
643
- security: [
644
- {
645
- scheme: "bearer",
646
- type: "http"
647
- }
648
- ],
649
- url: "/syndicates/{syndicate_id}/members/reorder",
650
- ...options,
651
- headers: {
652
- "Content-Type": "application/json",
653
- ...options?.headers
1278
+ var listOfferings = (options) => (options?.client ?? client).get({
1279
+ querySerializer: {
1280
+ parameters: {
1281
+ industry: { array: { explode: false } },
1282
+ business_model: { array: { explode: false } }
654
1283
  }
655
- });
656
- };
657
- var exportSyndicateMembersCsv = (options) => {
658
- return (options.client ?? client).post({
659
- security: [
660
- {
661
- scheme: "bearer",
662
- type: "http"
663
- }
664
- ],
665
- url: "/syndicates/{syndicate_id}/members/export_csv",
666
- ...options
667
- });
668
- };
669
- var listSyndicateDeals = (options) => {
670
- return (options.client ?? client).get({
671
- security: [
672
- {
673
- scheme: "bearer",
674
- type: "http"
675
- }
676
- ],
677
- url: "/syndicates/{syndicate_id}/deals",
678
- ...options
679
- });
680
- };
681
- var getSyndicateDeal = (options) => {
682
- return (options.client ?? client).get({
683
- security: [
684
- {
685
- scheme: "bearer",
686
- type: "http"
687
- }
688
- ],
689
- url: "/syndicates/{syndicate_id}/deals/{fundraise_id}",
690
- ...options
691
- });
692
- };
693
- var listSyndicateDealInvestors = (options) => {
694
- return (options.client ?? client).get({
695
- security: [
696
- {
697
- scheme: "bearer",
698
- type: "http"
699
- }
700
- ],
701
- url: "/syndicates/{syndicate_id}/deals/{fundraise_id}/investors",
702
- ...options
703
- });
704
- };
705
- var listSyndicateMemberInvestments = (options) => {
706
- return (options.client ?? client).get({
707
- security: [
708
- {
709
- scheme: "bearer",
710
- type: "http"
711
- }
712
- ],
713
- url: "/syndicates/{syndicate_id}/members/{member_id}/investments",
714
- ...options
715
- });
716
- };
717
- var getSyndicateStatistics = (options) => {
718
- return (options.client ?? client).get({
719
- security: [
720
- {
721
- scheme: "bearer",
722
- type: "http"
723
- }
724
- ],
725
- url: "/syndicates/{syndicate_id}/statistics",
726
- ...options
727
- });
728
- };
729
- var closeSyndicateDeal = (options) => {
730
- return (options.client ?? client).post({
731
- security: [
732
- {
733
- scheme: "bearer",
734
- type: "http"
735
- }
736
- ],
737
- url: "/syndicates/{syndicate_id}/deals/{fundraise_id}/close",
738
- ...options
739
- });
740
- };
741
- var finalizeSyndicateDeal = (options) => {
742
- return (options.client ?? client).post({
743
- security: [
744
- {
745
- scheme: "bearer",
746
- type: "http"
747
- }
748
- ],
749
- url: "/syndicates/{syndicate_id}/deals/{fundraise_id}/finalize",
750
- ...options
751
- });
752
- };
753
- var listIntents = (options) => {
754
- return (options?.client ?? client).get({
755
- security: [
756
- {
757
- scheme: "bearer",
758
- type: "http"
759
- }
760
- ],
761
- url: "/intents",
762
- ...options
763
- });
764
- };
765
- var createIntent = (options) => {
766
- return (options.client ?? client).post({
767
- security: [
768
- {
769
- scheme: "bearer",
770
- type: "http"
771
- }
772
- ],
773
- url: "/intents",
774
- ...options,
775
- headers: {
776
- "Content-Type": "application/json",
777
- ...options?.headers
778
- }
779
- });
780
- };
781
- var getIntent = (options) => {
782
- return (options.client ?? client).get({
783
- security: [
784
- {
785
- scheme: "bearer",
786
- type: "http"
787
- }
788
- ],
789
- url: "/intents/{intent_id}",
790
- ...options
791
- });
792
- };
793
- var listActivity = (options) => {
794
- return (options?.client ?? client).get({
795
- security: [
796
- {
797
- scheme: "bearer",
798
- type: "http"
799
- }
800
- ],
801
- url: "/activity",
802
- ...options
803
- });
804
- };
805
- var listConnectedApps = (options) => {
806
- return (options?.client ?? client).get({
807
- security: [
808
- {
809
- scheme: "bearer",
810
- type: "http"
811
- }
812
- ],
813
- url: "/connected-apps",
814
- ...options
815
- });
816
- };
817
- var revokeConnectedApp = (options) => {
818
- return (options.client ?? client).delete({
819
- security: [
820
- {
821
- scheme: "bearer",
822
- type: "http"
823
- }
824
- ],
825
- url: "/connected-apps/{app_id}",
826
- ...options
827
- });
828
- };
829
- var getAttributionStats = (options) => {
830
- return (options.client ?? client).get({
831
- security: [
832
- {
833
- scheme: "bearer",
834
- type: "http"
835
- }
836
- ],
837
- url: "/campaigns/{campaign_id}/attribution/stats",
838
- ...options
839
- });
840
- };
841
- var listAttributedInvestments = (options) => {
842
- return (options.client ?? client).get({
843
- security: [
844
- {
845
- scheme: "bearer",
846
- type: "http"
847
- }
848
- ],
849
- url: "/campaigns/{campaign_id}/attribution/investments",
850
- ...options
851
- });
852
- };
853
- var listWebhookSubscriptions = (options) => {
854
- return (options.client ?? client).get({
855
- security: [
856
- {
857
- scheme: "bearer",
858
- type: "http"
859
- }
860
- ],
861
- url: "/campaigns/{campaign_id}/attribution/webhooks",
862
- ...options
863
- });
864
- };
865
- var createWebhookSubscription = (options) => {
866
- return (options.client ?? client).post({
867
- security: [
868
- {
869
- scheme: "bearer",
870
- type: "http"
871
- }
872
- ],
873
- url: "/campaigns/{campaign_id}/attribution/webhooks",
874
- ...options,
875
- headers: {
876
- "Content-Type": "application/json",
877
- ...options?.headers
878
- }
879
- });
880
- };
881
- var deleteWebhookSubscription = (options) => {
882
- return (options.client ?? client).delete({
883
- security: [
884
- {
885
- scheme: "bearer",
886
- type: "http"
887
- }
888
- ],
889
- url: "/campaigns/{campaign_id}/attribution/webhooks/{webhook_id}",
890
- ...options
891
- });
892
- };
893
- var getWebhookSubscription = (options) => {
894
- return (options.client ?? client).get({
895
- security: [
896
- {
897
- scheme: "bearer",
898
- type: "http"
899
- }
900
- ],
901
- url: "/campaigns/{campaign_id}/attribution/webhooks/{webhook_id}",
902
- ...options
903
- });
904
- };
905
- var testWebhookSubscription = (options) => {
906
- return (options.client ?? client).post({
907
- security: [
908
- {
909
- scheme: "bearer",
910
- type: "http"
911
- }
912
- ],
913
- url: "/campaigns/{campaign_id}/attribution/webhooks/{webhook_id}/test",
914
- ...options
915
- });
916
- };
917
- var regenerateWebhookSecret = (options) => {
918
- return (options.client ?? client).post({
919
- security: [
920
- {
921
- scheme: "bearer",
922
- type: "http"
923
- }
924
- ],
925
- url: "/campaigns/{campaign_id}/attribution/webhooks/{webhook_id}/regenerate_secret",
926
- ...options
927
- });
928
- };
929
- var reactivateWebhookSubscription = (options) => {
930
- return (options.client ?? client).post({
931
- security: [
932
- {
933
- scheme: "bearer",
934
- type: "http"
935
- }
936
- ],
937
- url: "/campaigns/{campaign_id}/attribution/webhooks/{webhook_id}/reactivate",
938
- ...options
939
- });
940
- };
941
- var getAttributionMe = (options) => {
942
- return (options?.client ?? client).get({
943
- security: [
944
- {
945
- scheme: "bearer",
946
- type: "http"
947
- }
948
- ],
949
- url: "/attribution/me",
950
- ...options
951
- });
952
- };
953
- var listAttributionCampaigns = (options) => {
954
- return (options?.client ?? client).get({
955
- security: [
956
- {
957
- scheme: "bearer",
958
- type: "http"
959
- }
960
- ],
961
- url: "/attribution/campaigns",
962
- ...options
963
- });
964
- };
965
- var registerAsPartner = (options) => {
966
- return (options.client ?? client).post({
967
- security: [
968
- {
969
- scheme: "bearer",
970
- type: "http"
971
- }
972
- ],
973
- url: "/attribution/partners/register",
974
- ...options,
975
- headers: {
976
- "Content-Type": "application/json",
977
- ...options?.headers
978
- }
979
- });
980
- };
981
- var listPartnerInvites = (options) => {
982
- return (options?.client ?? client).get({
983
- security: [
984
- {
985
- scheme: "bearer",
986
- type: "http"
987
- }
988
- ],
989
- url: "/attribution/invites",
990
- ...options
991
- });
992
- };
993
- var createPartnerInvite = (options) => {
994
- return (options.client ?? client).post({
995
- security: [
996
- {
997
- scheme: "bearer",
998
- type: "http"
999
- }
1000
- ],
1001
- url: "/attribution/invites",
1002
- ...options,
1003
- headers: {
1004
- "Content-Type": "application/json",
1005
- ...options?.headers
1006
- }
1007
- });
1008
- };
1009
- var revokePartnerInvite = (options) => {
1010
- return (options.client ?? client).delete({
1011
- security: [
1012
- {
1013
- scheme: "bearer",
1014
- type: "http"
1015
- }
1016
- ],
1017
- url: "/attribution/invites/{token}",
1018
- ...options
1019
- });
1020
- };
1284
+ },
1285
+ security: [{ scheme: "bearer", type: "http" }],
1286
+ url: "/explore",
1287
+ ...options
1288
+ });
1289
+ var getOffering = (options) => (options.client ?? client).get({
1290
+ security: [{ scheme: "bearer", type: "http" }],
1291
+ url: "/offerings/{external_id}",
1292
+ ...options
1293
+ });
1294
+ var getCompanyDisclosures = (options) => (options.client ?? client).get({
1295
+ querySerializer: {
1296
+ parameters: { sections: { array: { explode: false } } }
1297
+ },
1298
+ security: [{ scheme: "bearer", type: "http" }],
1299
+ url: "/companies/{id}/disclosures",
1300
+ ...options
1301
+ });
1302
+ var getCompanyPitch = (options) => (options.client ?? client).get({
1303
+ querySerializer: {
1304
+ parameters: { sections: { array: { explode: false } } }
1305
+ },
1306
+ security: [{ scheme: "bearer", type: "http" }],
1307
+ url: "/companies/{id}/pitch",
1308
+ ...options
1309
+ });
1310
+ var listCompanyUpdates = (options) => (options.client ?? client).get({
1311
+ security: [{ scheme: "bearer", type: "http" }],
1312
+ url: "/companies/{id}/updates",
1313
+ ...options
1314
+ });
1315
+ var getCompanyUpdate = (options) => (options.client ?? client).get({
1316
+ security: [{ scheme: "bearer", type: "http" }],
1317
+ url: "/companies/{id}/updates/{update_id}",
1318
+ ...options
1319
+ });
1320
+ var listCompanyQuestions = (options) => (options.client ?? client).get({
1321
+ security: [{ scheme: "bearer", type: "http" }],
1322
+ url: "/companies/{id}/questions",
1323
+ ...options
1324
+ });
1325
+ var searchCompanies = (options) => (options.client ?? client).get({
1326
+ security: [{ scheme: "bearer", type: "http" }],
1327
+ url: "/companies/search",
1328
+ ...options
1329
+ });
1330
+ var getCompany = (options) => (options.client ?? client).get({
1331
+ security: [{ scheme: "bearer", type: "http" }],
1332
+ url: "/companies/{id}",
1333
+ ...options
1334
+ });
1335
+ var getCurrentUser = (options) => (options?.client ?? client).get({
1336
+ security: [{ scheme: "bearer", type: "http" }],
1337
+ url: "/users/me",
1338
+ ...options
1339
+ });
1340
+ var listMyCompanies = (options) => (options?.client ?? client).get({
1341
+ security: [{ scheme: "bearer", type: "http" }],
1342
+ url: "/users/me/companies",
1343
+ ...options
1344
+ });
1345
+ var listFollowedCompanies = (options) => (options?.client ?? client).get({
1346
+ security: [{ scheme: "bearer", type: "http" }],
1347
+ url: "/users/me/follows",
1348
+ ...options
1349
+ });
1350
+ var unfollowCompany = (options) => (options.client ?? client).delete({
1351
+ security: [{ scheme: "bearer", type: "http" }],
1352
+ url: "/users/me/follows/{company_id}",
1353
+ ...options
1354
+ });
1355
+ var followCompany = (options) => (options.client ?? client).put({
1356
+ security: [{ scheme: "bearer", type: "http" }],
1357
+ url: "/users/me/follows/{company_id}",
1358
+ ...options
1359
+ });
1360
+ var listInvestments = (options) => (options?.client ?? client).get({
1361
+ security: [{ scheme: "bearer", type: "http" }],
1362
+ url: "/investments",
1363
+ ...options
1364
+ });
1365
+ var getInvestment = (options) => (options.client ?? client).get({
1366
+ security: [{ scheme: "bearer", type: "http" }],
1367
+ url: "/investments/{id}",
1368
+ ...options
1369
+ });
1370
+ var getOfferingStats = (options) => (options.client ?? client).get({
1371
+ security: [{ scheme: "bearer", type: "http" }],
1372
+ url: "/offerings/{offering_id}/stats",
1373
+ ...options
1374
+ });
1375
+ var listCompanyInvestmentChanges = (options) => (options.client ?? client).get({
1376
+ security: [{ scheme: "bearer", type: "http" }],
1377
+ url: "/companies/{company_id}/investments/changes",
1378
+ ...options
1379
+ });
1380
+ var getPortfolio = (options) => (options?.client ?? client).get({
1381
+ security: [{ scheme: "bearer", type: "http" }],
1382
+ url: "/portfolio",
1383
+ ...options
1384
+ });
1385
+ var listPortfolioPositions = (options) => (options?.client ?? client).get({
1386
+ security: [{ scheme: "bearer", type: "http" }],
1387
+ url: "/portfolio/positions",
1388
+ ...options
1389
+ });
1390
+ var listCampaigns = (options) => (options?.client ?? client).get({
1391
+ security: [{ scheme: "bearer", type: "http" }],
1392
+ url: "/campaigns",
1393
+ ...options
1394
+ });
1395
+ var listSyndicates = (options) => (options?.client ?? client).get({
1396
+ security: [{ scheme: "bearer", type: "http" }],
1397
+ url: "/syndicates",
1398
+ ...options
1399
+ });
1400
+ var getSyndicate = (options) => (options.client ?? client).get({
1401
+ security: [{ scheme: "bearer", type: "http" }],
1402
+ url: "/syndicates/{syndicate_id}",
1403
+ ...options
1404
+ });
1405
+ var updateSyndicate = (options) => (options.client ?? client).patch({
1406
+ security: [{ scheme: "bearer", type: "http" }],
1407
+ url: "/syndicates/{syndicate_id}",
1408
+ ...options,
1409
+ headers: {
1410
+ "Content-Type": "application/json",
1411
+ ...options.headers
1412
+ }
1413
+ });
1414
+ var listSyndicateMembers = (options) => (options.client ?? client).get({
1415
+ security: [{ scheme: "bearer", type: "http" }],
1416
+ url: "/syndicates/{syndicate_id}/members",
1417
+ ...options
1418
+ });
1419
+ var inviteSyndicateMember = (options) => (options.client ?? client).post({
1420
+ security: [{ scheme: "bearer", type: "http" }],
1421
+ url: "/syndicates/{syndicate_id}/members/invite",
1422
+ ...options,
1423
+ headers: {
1424
+ "Content-Type": "application/json",
1425
+ ...options.headers
1426
+ }
1427
+ });
1428
+ var removeSyndicateMember = (options) => (options.client ?? client).delete({
1429
+ security: [{ scheme: "bearer", type: "http" }],
1430
+ url: "/syndicates/{syndicate_id}/members/{member_id}",
1431
+ ...options
1432
+ });
1433
+ var updateSyndicateMember = (options) => (options.client ?? client).patch({
1434
+ security: [{ scheme: "bearer", type: "http" }],
1435
+ url: "/syndicates/{syndicate_id}/members/{member_id}",
1436
+ ...options,
1437
+ headers: {
1438
+ "Content-Type": "application/json",
1439
+ ...options.headers
1440
+ }
1441
+ });
1442
+ var approveSyndicateMember = (options) => (options.client ?? client).post({
1443
+ security: [{ scheme: "bearer", type: "http" }],
1444
+ url: "/syndicates/{syndicate_id}/members/{member_id}/approve",
1445
+ ...options
1446
+ });
1447
+ var hideSyndicateMember = (options) => (options.client ?? client).post({
1448
+ security: [{ scheme: "bearer", type: "http" }],
1449
+ url: "/syndicates/{syndicate_id}/members/{member_id}/hide",
1450
+ ...options
1451
+ });
1452
+ var promoteSyndicateMember = (options) => (options.client ?? client).post({
1453
+ security: [{ scheme: "bearer", type: "http" }],
1454
+ url: "/syndicates/{syndicate_id}/members/{member_id}/promote",
1455
+ ...options
1456
+ });
1457
+ var demoteSyndicateMember = (options) => (options.client ?? client).post({
1458
+ security: [{ scheme: "bearer", type: "http" }],
1459
+ url: "/syndicates/{syndicate_id}/members/{member_id}/demote",
1460
+ ...options
1461
+ });
1462
+ var restoreSyndicateMember = (options) => (options.client ?? client).post({
1463
+ security: [{ scheme: "bearer", type: "http" }],
1464
+ url: "/syndicates/{syndicate_id}/members/{member_id}/restore",
1465
+ ...options
1466
+ });
1467
+ var resendSyndicateInvite = (options) => (options.client ?? client).post({
1468
+ security: [{ scheme: "bearer", type: "http" }],
1469
+ url: "/syndicates/{syndicate_id}/members/{member_id}/resend_invite",
1470
+ ...options
1471
+ });
1472
+ var reorderSyndicateMembers = (options) => (options.client ?? client).post({
1473
+ security: [{ scheme: "bearer", type: "http" }],
1474
+ url: "/syndicates/{syndicate_id}/members/reorder",
1475
+ ...options,
1476
+ headers: {
1477
+ "Content-Type": "application/json",
1478
+ ...options.headers
1479
+ }
1480
+ });
1481
+ var exportSyndicateMembersCsv = (options) => (options.client ?? client).post({
1482
+ security: [{ scheme: "bearer", type: "http" }],
1483
+ url: "/syndicates/{syndicate_id}/members/export_csv",
1484
+ ...options
1485
+ });
1486
+ var listSyndicateDeals = (options) => (options.client ?? client).get({
1487
+ security: [{ scheme: "bearer", type: "http" }],
1488
+ url: "/syndicates/{syndicate_id}/deals",
1489
+ ...options
1490
+ });
1491
+ var getSyndicateDeal = (options) => (options.client ?? client).get({
1492
+ security: [{ scheme: "bearer", type: "http" }],
1493
+ url: "/syndicates/{syndicate_id}/deals/{fundraise_id}",
1494
+ ...options
1495
+ });
1496
+ var listSyndicateDealInvestors = (options) => (options.client ?? client).get({
1497
+ security: [{ scheme: "bearer", type: "http" }],
1498
+ url: "/syndicates/{syndicate_id}/deals/{fundraise_id}/investors",
1499
+ ...options
1500
+ });
1501
+ var listSyndicateMemberInvestments = (options) => (options.client ?? client).get({
1502
+ security: [{ scheme: "bearer", type: "http" }],
1503
+ url: "/syndicates/{syndicate_id}/members/{member_id}/investments",
1504
+ ...options
1505
+ });
1506
+ var getSyndicateStatistics = (options) => (options.client ?? client).get({
1507
+ security: [{ scheme: "bearer", type: "http" }],
1508
+ url: "/syndicates/{syndicate_id}/statistics",
1509
+ ...options
1510
+ });
1511
+ var getSyndicatePortfolio = (options) => (options.client ?? client).get({
1512
+ security: [{ scheme: "bearer", type: "http" }],
1513
+ url: "/syndicates/{syndicate_id}/portfolio",
1514
+ ...options
1515
+ });
1516
+ var listSyndicatePortfolioPositions = (options) => (options.client ?? client).get({
1517
+ security: [{ scheme: "bearer", type: "http" }],
1518
+ url: "/syndicates/{syndicate_id}/portfolio/positions",
1519
+ ...options
1520
+ });
1521
+ var closeSyndicateDeal = (options) => (options.client ?? client).post({
1522
+ security: [{ scheme: "bearer", type: "http" }],
1523
+ url: "/syndicates/{syndicate_id}/deals/{fundraise_id}/close",
1524
+ ...options
1525
+ });
1526
+ var finalizeSyndicateDeal = (options) => (options.client ?? client).post({
1527
+ security: [{ scheme: "bearer", type: "http" }],
1528
+ url: "/syndicates/{syndicate_id}/deals/{fundraise_id}/finalize",
1529
+ ...options
1530
+ });
1531
+ var previewIntent = (options) => (options.client ?? client).post({
1532
+ security: [{ scheme: "bearer", type: "http" }],
1533
+ url: "/intents/preview",
1534
+ ...options,
1535
+ headers: {
1536
+ "Content-Type": "application/json",
1537
+ ...options.headers
1538
+ }
1539
+ });
1540
+ var listIntents = (options) => (options?.client ?? client).get({
1541
+ security: [{ scheme: "bearer", type: "http" }],
1542
+ url: "/intents",
1543
+ ...options
1544
+ });
1545
+ var createIntent = (options) => (options.client ?? client).post({
1546
+ security: [{ scheme: "bearer", type: "http" }],
1547
+ url: "/intents",
1548
+ ...options,
1549
+ headers: {
1550
+ "Content-Type": "application/json",
1551
+ ...options.headers
1552
+ }
1553
+ });
1554
+ var getIntent = (options) => (options.client ?? client).get({
1555
+ security: [{ scheme: "bearer", type: "http" }],
1556
+ url: "/intents/{intent_id}",
1557
+ ...options
1558
+ });
1559
+ var listActivity = (options) => (options?.client ?? client).get({
1560
+ security: [{ scheme: "bearer", type: "http" }],
1561
+ url: "/activity",
1562
+ ...options
1563
+ });
1564
+ var listConnectedApps = (options) => (options?.client ?? client).get({
1565
+ security: [{ scheme: "bearer", type: "http" }],
1566
+ url: "/connected-apps",
1567
+ ...options
1568
+ });
1569
+ var revokeConnectedApp = (options) => (options.client ?? client).delete({
1570
+ security: [{ scheme: "bearer", type: "http" }],
1571
+ url: "/connected-apps/{app_id}",
1572
+ ...options
1573
+ });
1574
+ var getAttributionStats = (options) => (options.client ?? client).get({
1575
+ security: [{ scheme: "bearer", type: "http" }],
1576
+ url: "/campaigns/{campaign_id}/attribution/stats",
1577
+ ...options
1578
+ });
1579
+ var listAttributedInvestments = (options) => (options.client ?? client).get({
1580
+ security: [{ scheme: "bearer", type: "http" }],
1581
+ url: "/campaigns/{campaign_id}/attribution/investments",
1582
+ ...options
1583
+ });
1584
+ var listInstallations = (options) => (options?.client ?? client).get({
1585
+ security: [{ scheme: "bearer", type: "http" }],
1586
+ url: "/installations",
1587
+ ...options
1588
+ });
1589
+ var createInstallation = (options) => (options.client ?? client).post({
1590
+ security: [{ scheme: "bearer", type: "http" }],
1591
+ url: "/installations",
1592
+ ...options,
1593
+ headers: {
1594
+ "Content-Type": "application/json",
1595
+ ...options.headers
1596
+ }
1597
+ });
1598
+ var listEligibleInstallTargets = (options) => (options?.client ?? client).get({
1599
+ security: [{ scheme: "bearer", type: "http" }],
1600
+ url: "/installations/eligible",
1601
+ ...options
1602
+ });
1603
+ var revokeInstallation = (options) => (options.client ?? client).delete({
1604
+ security: [{ scheme: "bearer", type: "http" }],
1605
+ url: "/installations/{external_id}",
1606
+ ...options
1607
+ });
1608
+ var getInstallation = (options) => (options.client ?? client).get({
1609
+ security: [{ scheme: "bearer", type: "http" }],
1610
+ url: "/installations/{external_id}",
1611
+ ...options
1612
+ });
1613
+ var createInstallationToken = (options) => (options.client ?? client).post({
1614
+ security: [{ scheme: "bearer", type: "http" }],
1615
+ url: "/installations/{external_id}/tokens",
1616
+ ...options,
1617
+ headers: {
1618
+ "Content-Type": "application/json",
1619
+ ...options.headers
1620
+ }
1621
+ });
1622
+ var listWebhookEndpoints = (options) => (options?.client ?? client).get({
1623
+ security: [{ scheme: "bearer", type: "http" }],
1624
+ url: "/webhook_endpoints",
1625
+ ...options
1626
+ });
1627
+ var createWebhookEndpoint = (options) => (options.client ?? client).post({
1628
+ security: [{ scheme: "bearer", type: "http" }],
1629
+ url: "/webhook_endpoints",
1630
+ ...options,
1631
+ headers: {
1632
+ "Content-Type": "application/json",
1633
+ ...options.headers
1634
+ }
1635
+ });
1636
+ var deleteWebhookEndpoint = (options) => (options.client ?? client).delete({
1637
+ security: [{ scheme: "bearer", type: "http" }],
1638
+ url: "/webhook_endpoints/{external_id}",
1639
+ ...options
1640
+ });
1641
+ var getWebhookEndpoint = (options) => (options.client ?? client).get({
1642
+ security: [{ scheme: "bearer", type: "http" }],
1643
+ url: "/webhook_endpoints/{external_id}",
1644
+ ...options
1645
+ });
1646
+ var updateWebhookEndpoint = (options) => (options.client ?? client).patch({
1647
+ security: [{ scheme: "bearer", type: "http" }],
1648
+ url: "/webhook_endpoints/{external_id}",
1649
+ ...options,
1650
+ headers: {
1651
+ "Content-Type": "application/json",
1652
+ ...options.headers
1653
+ }
1654
+ });
1655
+ var rotateWebhookEndpointSecret = (options) => (options.client ?? client).post({
1656
+ security: [{ scheme: "bearer", type: "http" }],
1657
+ url: "/webhook_endpoints/{external_id}/rotate_secret",
1658
+ ...options
1659
+ });
1660
+ var reenableWebhookEndpoint = (options) => (options.client ?? client).post({
1661
+ security: [{ scheme: "bearer", type: "http" }],
1662
+ url: "/webhook_endpoints/{external_id}/reenable",
1663
+ ...options
1664
+ });
1665
+ var testWebhookEndpoint = (options) => (options.client ?? client).post({
1666
+ security: [{ scheme: "bearer", type: "http" }],
1667
+ url: "/webhook_endpoints/{external_id}/test",
1668
+ ...options,
1669
+ headers: {
1670
+ "Content-Type": "application/json",
1671
+ ...options.headers
1672
+ }
1673
+ });
1674
+ var listWebhookSubscriptions = (options) => (options.client ?? client).get({
1675
+ security: [{ scheme: "bearer", type: "http" }],
1676
+ url: "/campaigns/{campaign_id}/attribution/webhooks",
1677
+ ...options
1678
+ });
1679
+ var createWebhookSubscription = (options) => (options.client ?? client).post({
1680
+ security: [{ scheme: "bearer", type: "http" }],
1681
+ url: "/campaigns/{campaign_id}/attribution/webhooks",
1682
+ ...options,
1683
+ headers: {
1684
+ "Content-Type": "application/json",
1685
+ ...options.headers
1686
+ }
1687
+ });
1688
+ var deleteWebhookSubscription = (options) => (options.client ?? client).delete({
1689
+ security: [{ scheme: "bearer", type: "http" }],
1690
+ url: "/campaigns/{campaign_id}/attribution/webhooks/{webhook_id}",
1691
+ ...options
1692
+ });
1693
+ var getWebhookSubscription = (options) => (options.client ?? client).get({
1694
+ security: [{ scheme: "bearer", type: "http" }],
1695
+ url: "/campaigns/{campaign_id}/attribution/webhooks/{webhook_id}",
1696
+ ...options
1697
+ });
1698
+ var testWebhookSubscription = (options) => (options.client ?? client).post({
1699
+ security: [{ scheme: "bearer", type: "http" }],
1700
+ url: "/campaigns/{campaign_id}/attribution/webhooks/{webhook_id}/test",
1701
+ ...options
1702
+ });
1703
+ var regenerateWebhookSecret = (options) => (options.client ?? client).post({
1704
+ security: [{ scheme: "bearer", type: "http" }],
1705
+ url: "/campaigns/{campaign_id}/attribution/webhooks/{webhook_id}/regenerate_secret",
1706
+ ...options
1707
+ });
1708
+ var reactivateWebhookSubscription = (options) => (options.client ?? client).post({
1709
+ security: [{ scheme: "bearer", type: "http" }],
1710
+ url: "/campaigns/{campaign_id}/attribution/webhooks/{webhook_id}/reactivate",
1711
+ ...options
1712
+ });
1713
+ var getAttributionMe = (options) => (options?.client ?? client).get({
1714
+ security: [{ scheme: "bearer", type: "http" }],
1715
+ url: "/attribution/me",
1716
+ ...options
1717
+ });
1718
+ var listAttributionCampaigns = (options) => (options?.client ?? client).get({
1719
+ security: [{ scheme: "bearer", type: "http" }],
1720
+ url: "/attribution/campaigns",
1721
+ ...options
1722
+ });
1723
+ var registerAsPartner = (options) => (options.client ?? client).post({
1724
+ security: [{ scheme: "bearer", type: "http" }],
1725
+ url: "/attribution/partners/register",
1726
+ ...options,
1727
+ headers: {
1728
+ "Content-Type": "application/json",
1729
+ ...options.headers
1730
+ }
1731
+ });
1732
+ var listPartnerInvites = (options) => (options?.client ?? client).get({
1733
+ security: [{ scheme: "bearer", type: "http" }],
1734
+ url: "/attribution/invites",
1735
+ ...options
1736
+ });
1737
+ var createPartnerInvite = (options) => (options.client ?? client).post({
1738
+ security: [{ scheme: "bearer", type: "http" }],
1739
+ url: "/attribution/invites",
1740
+ ...options,
1741
+ headers: {
1742
+ "Content-Type": "application/json",
1743
+ ...options.headers
1744
+ }
1745
+ });
1746
+ var revokePartnerInvite = (options) => (options.client ?? client).delete({
1747
+ security: [{ scheme: "bearer", type: "http" }],
1748
+ url: "/attribution/invites/{token}",
1749
+ ...options
1750
+ });
1021
1751
 
1022
1752
  // src/client.ts
1023
- var DEFAULT_API_BASE_URL = "https://api.wefunder.com/api/v2";
1753
+ var DEFAULT_API_BASE_URL = "https://api.wefunder.com";
1024
1754
  var DEFAULT_API_VERSION = "2025-01-15";
1025
1755
  function modeForToken(token) {
1026
1756
  if (token.startsWith("at_live_")) return "live";
@@ -1067,7 +1797,7 @@ var Wefunder = class _Wefunder {
1067
1797
  random: opts.random,
1068
1798
  retry: opts.retry
1069
1799
  });
1070
- this.#client = (0, import_client_fetch2.createClient)({
1800
+ this.#client = createClient({
1071
1801
  baseUrl: opts.baseUrl ?? DEFAULT_API_BASE_URL,
1072
1802
  headers: { "Wefunder-Version": opts.apiVersion ?? DEFAULT_API_VERSION },
1073
1803
  auth: () => this.#tokens.getAccessToken(),
@@ -1158,10 +1888,27 @@ var Wefunder = class _Wefunder {
1158
1888
  getOffering({ client: this.#client, path: { external_id: externalId } })
1159
1889
  )
1160
1890
  };
1891
+ /**
1892
+ * Investments (`read:investments`). `list` is a bootstrap listing; pass `updated_since`
1893
+ * or a saved `cursor` for sync mode (`meta.mode === "delta"`). Persist `meta.next_cursor`
1894
+ * from your last page — it is always present — and resume from it next time.
1895
+ */
1161
1896
  investments = {
1162
1897
  list: this.#page(listInvestments),
1163
- all: () => paginate((cursor) => this.investments.list({ cursor })),
1164
- collect: () => collect((cursor) => this.investments.list({ cursor }))
1898
+ all: (query) => paginate((cursor) => this.investments.list({ ...query, cursor })),
1899
+ collect: (query) => collect((cursor) => this.investments.list({ ...query, cursor })),
1900
+ /** The current record (not the published projection) for one investment (`inv_…`). */
1901
+ get: (id) => this.#unwrapData(getInvestment({ client: this.#client, path: { id } }))
1902
+ };
1903
+ portfolio = {
1904
+ get: (query) => this.#unwrapData(getPortfolio({ client: this.#client, query })),
1905
+ positions: {
1906
+ list: this.#page(
1907
+ listPortfolioPositions
1908
+ ),
1909
+ all: (query) => paginate((cursor) => this.portfolio.positions.list({ ...query, cursor })),
1910
+ collect: (query) => collect((cursor) => this.portfolio.positions.list({ ...query, cursor }))
1911
+ }
1165
1912
  };
1166
1913
  campaigns = {
1167
1914
  list: this.#page(listCampaigns),
@@ -1170,28 +1917,87 @@ var Wefunder = class _Wefunder {
1170
1917
  };
1171
1918
  syndicates = {
1172
1919
  list: this.#page(listSyndicates),
1173
- all: () => paginate((cursor) => this.syndicates.list({ cursor })),
1920
+ all: (query) => paginate((cursor) => this.syndicates.list({ ...query, cursor })),
1174
1921
  get: (id) => this.#unwrapData(getSyndicate({ client: this.#client, path: { id } }))
1175
1922
  };
1176
1923
  intents = {
1177
1924
  list: this.#page(listIntents),
1178
- all: () => paginate((cursor) => this.intents.list({ cursor })),
1925
+ all: (query) => paginate((cursor) => this.intents.list({ ...query, cursor })),
1179
1926
  get: (id) => this.#unwrapData(getIntent({ client: this.#client, path: { id } }))
1180
1927
  };
1181
1928
  attribution = {
1182
1929
  me: () => this.#unwrapData(getAttributionMe({ client: this.#client }))
1183
1930
  };
1931
+ /**
1932
+ * Webhook endpoints (`/webhook_endpoints`, scopes `read:webhooks` / `write:webhooks`).
1933
+ * Endpoints belong to your application and are managed through the LIVE API —
1934
+ * create sandbox receivers there with `mode: "test"`; they're mirrored into
1935
+ * sandbox. The signing `secret` is returned ONLY by `create` and `rotateSecret`.
1936
+ * Verify deliveries with `constructEvent` (see the webhooks module).
1937
+ */
1938
+ webhookEndpoints = {
1939
+ /** All of your app's endpoints (secret omitted). `meta.quota` is the per-app limit. */
1940
+ list: () => this.#unwrap(listWebhookEndpoints({ client: this.#client })),
1941
+ get: (id) => this.#unwrapData(
1942
+ getWebhookEndpoint({ client: this.#client, path: { external_id: id } })
1943
+ ),
1944
+ /** Store `attributes.secret` from the result — it is never shown again. */
1945
+ create: (input) => this.#unwrapData(createWebhookEndpoint({ client: this.#client, body: input })),
1946
+ /** `events` replaces the subscription list wholesale (no merge); omit to leave unchanged. */
1947
+ update: (id, input) => this.#unwrapData(
1948
+ updateWebhookEndpoint({ client: this.#client, path: { external_id: id }, body: input })
1949
+ ),
1950
+ /** Stops deliveries immediately. Removal is permanent — create a new endpoint to resume. */
1951
+ remove: (id) => this.#unwrapData(
1952
+ deleteWebhookEndpoint({ client: this.#client, path: { external_id: id } })
1953
+ ),
1954
+ /**
1955
+ * New secret (shown once). The old one keeps signing for a 24h overlap — deliveries
1956
+ * carry a `v1` for both, and `constructEvent` accepts either.
1957
+ */
1958
+ rotateSecret: (id) => this.#unwrapData(
1959
+ rotateWebhookEndpointSecret({ client: this.#client, path: { external_id: id } })
1960
+ ),
1961
+ /** Recover an auto-disabled endpoint after fixing your server. Idempotent. */
1962
+ reenable: (id) => this.#unwrapData(
1963
+ reenableWebhookEndpoint({ client: this.#client, path: { external_id: id } })
1964
+ ),
1965
+ /**
1966
+ * POST a real, signed example event at the endpoint (production envelope + signature)
1967
+ * and report the outcome inline. Defaults to the endpoint's first subscribed event.
1968
+ * Doesn't affect delivery health. Rate-limited to 10/min per endpoint.
1969
+ */
1970
+ test: (id, event) => this.#unwrapData(
1971
+ testWebhookEndpoint({
1972
+ client: this.#client,
1973
+ path: { external_id: id },
1974
+ body: event ? { event } : void 0
1975
+ })
1976
+ )
1977
+ };
1184
1978
  };
1185
1979
 
1186
1980
  // src/webhooks.ts
1187
1981
  var import_node_crypto2 = require("crypto");
1188
- var SIGNATURE_HEADER = "x-wefunder-signature";
1189
- var TIMESTAMP_HEADER = "x-wefunder-timestamp";
1190
- var EVENT_HEADER = "x-wefunder-event";
1191
- var DELIVERY_ID_HEADER = "x-wefunder-delivery-id";
1192
- function computeSignature(secret, timestamp, payload) {
1193
- const mac = (0, import_node_crypto2.createHmac)("sha256", secret).update(`${timestamp}.${payload}`).digest("hex");
1194
- return `sha256=${mac}`;
1982
+ var SIGNATURE_HEADER = "wefunder-signature";
1983
+ var DEFAULT_TOLERANCE_SECONDS = 300;
1984
+ var LEGACY_SIGNATURE_HEADER = "x-wefunder-signature";
1985
+ var LEGACY_TIMESTAMP_HEADER = "x-wefunder-timestamp";
1986
+ var LEGACY_EVENT_HEADER = "x-wefunder-event";
1987
+ var LEGACY_DELIVERY_ID_HEADER = "x-wefunder-delivery-id";
1988
+ var WebhookSignatureError = class extends Error {
1989
+ reason;
1990
+ constructor(reason, message) {
1991
+ super(message);
1992
+ this.name = "WebhookSignatureError";
1993
+ this.reason = reason;
1994
+ }
1995
+ };
1996
+ function bodyBuffer(payload) {
1997
+ return typeof payload === "string" ? Buffer.from(payload, "utf8") : Buffer.from(payload);
1998
+ }
1999
+ function computeWebhookSignature(secret, timestamp, payload) {
2000
+ return (0, import_node_crypto2.createHmac)("sha256", secret).update(`${timestamp}.`).update(bodyBuffer(payload)).digest("hex");
1195
2001
  }
1196
2002
  function constantTimeEqual(a, b) {
1197
2003
  const ab = Buffer.from(a);
@@ -1199,42 +2005,142 @@ function constantTimeEqual(a, b) {
1199
2005
  if (ab.length !== bb.length) return false;
1200
2006
  return (0, import_node_crypto2.timingSafeEqual)(ab, bb);
1201
2007
  }
2008
+ function parseSignatureHeader(header) {
2009
+ let timestamp;
2010
+ const signatures = [];
2011
+ for (const part of header.split(",")) {
2012
+ const eq = part.indexOf("=");
2013
+ if (eq < 0) continue;
2014
+ const key = part.slice(0, eq).trim();
2015
+ const value = part.slice(eq + 1).trim();
2016
+ if (key === "t") {
2017
+ if (!/^\d+$/.test(value)) return null;
2018
+ timestamp = Number(value);
2019
+ } else if (key === "v1" && value) {
2020
+ signatures.push(value);
2021
+ }
2022
+ }
2023
+ if (timestamp === void 0 || signatures.length === 0) return null;
2024
+ return { timestamp, signatures };
2025
+ }
2026
+ function signWebhook(opts) {
2027
+ const t = opts.timestamp ?? Math.floor(Date.now() / 1e3);
2028
+ const secrets = [opts.secret, ...opts.additionalSecrets ?? []];
2029
+ const entries = secrets.map((s) => `v1=${computeWebhookSignature(s, t, opts.payload)}`);
2030
+ return [`t=${t}`, ...entries].join(",");
2031
+ }
2032
+ function checkWebhookSignature(opts) {
2033
+ const parsed = parseSignatureHeader(opts.header);
2034
+ if (!parsed) return "malformed_header";
2035
+ const tolerance = opts.toleranceSeconds ?? DEFAULT_TOLERANCE_SECONDS;
2036
+ if (tolerance > 0) {
2037
+ const nowSec = (opts.now ?? Date.now)() / 1e3;
2038
+ if (Math.abs(nowSec - parsed.timestamp) > tolerance) return "timestamp_out_of_tolerance";
2039
+ }
2040
+ const expected = computeWebhookSignature(opts.secret, parsed.timestamp, opts.payload);
2041
+ return parsed.signatures.some((sig) => constantTimeEqual(sig, expected)) ? null : "signature_mismatch";
2042
+ }
1202
2043
  function verifyWebhook(opts) {
1203
- const tolerance = opts.toleranceSeconds ?? 300;
1204
- const now = (opts.now ?? Date.now)();
2044
+ if ("header" in opts) return checkWebhookSignature(opts) === null;
2045
+ return verifyLegacyWebhook(opts);
2046
+ }
2047
+ function verifyLegacyWebhook(opts) {
2048
+ const tolerance = opts.toleranceSeconds ?? DEFAULT_TOLERANCE_SECONDS;
1205
2049
  const ts = Number(opts.timestamp);
1206
2050
  if (!Number.isFinite(ts)) return false;
1207
- if (tolerance > 0 && Math.abs(now / 1e3 - ts) > tolerance) return false;
1208
- const expected = computeSignature(opts.secret, opts.timestamp, opts.payload);
2051
+ if (tolerance > 0 && Math.abs((opts.now ?? Date.now)() / 1e3 - ts) > tolerance) return false;
2052
+ const expected = `sha256=${computeWebhookSignature(opts.secret, opts.timestamp, opts.payload)}`;
1209
2053
  return constantTimeEqual(opts.signature, expected);
1210
2054
  }
1211
- function constructEvent(payload, headers, secret, opts) {
1212
- const get = (name) => {
1213
- if (headers instanceof Headers) return headers.get(name) ?? void 0;
1214
- const v = headers[name] ?? headers[name.toLowerCase()];
2055
+ function headerGetter(headers) {
2056
+ if (typeof headers === "string") {
2057
+ return (name) => name === SIGNATURE_HEADER ? headers : void 0;
2058
+ }
2059
+ if (headers instanceof Headers) return (name) => headers.get(name) ?? void 0;
2060
+ return (name) => {
2061
+ let v = headers[name];
2062
+ if (v === void 0) {
2063
+ const hit = Object.keys(headers).find((k) => k.toLowerCase() === name);
2064
+ if (hit) v = headers[hit];
2065
+ }
1215
2066
  return Array.isArray(v) ? v[0] : v;
1216
2067
  };
1217
- const signature = get(SIGNATURE_HEADER);
1218
- const timestamp = get(TIMESTAMP_HEADER);
1219
- if (!signature || !timestamp) {
1220
- throw new Error("Missing X-Wefunder-Signature or X-Wefunder-Timestamp header");
1221
- }
1222
- const ok = verifyWebhook({
1223
- payload,
1224
- signature,
1225
- timestamp,
1226
- secret,
1227
- toleranceSeconds: opts?.toleranceSeconds,
1228
- now: opts?.now
1229
- });
1230
- if (!ok) throw new Error("Webhook signature verification failed");
2068
+ }
2069
+ function constructEvent(payload, headers, secret, opts) {
2070
+ const get = headerGetter(headers);
2071
+ const header = get(SIGNATURE_HEADER);
2072
+ if (!header) {
2073
+ const legacySig = get(LEGACY_SIGNATURE_HEADER);
2074
+ const legacyTs = get(LEGACY_TIMESTAMP_HEADER);
2075
+ if (legacySig && legacyTs) return constructLegacyEvent(payload, get, legacySig, legacyTs, secret, opts);
2076
+ throw new WebhookSignatureError("missing_header", describeFailure("missing_header"));
2077
+ }
2078
+ const failure = checkWebhookSignature({ payload, header, secret, ...opts });
2079
+ if (failure) throw new WebhookSignatureError(failure, describeFailure(failure));
2080
+ const parsed = parseSignatureHeader(header);
2081
+ const env = parseEnvelope(payload);
1231
2082
  return {
1232
- event: get(EVENT_HEADER) ?? "",
1233
- deliveryId: get(DELIVERY_ID_HEADER) ?? "",
1234
- timestamp: Number(timestamp),
1235
- data: JSON.parse(payload)
2083
+ id: String(env.id ?? ""),
2084
+ event: String(env.event ?? ""),
2085
+ created_at: String(env.created_at ?? ""),
2086
+ mode: env.mode === "test" ? "test" : "live",
2087
+ data: env.data,
2088
+ timestamp: parsed.timestamp
1236
2089
  };
1237
2090
  }
2091
+ function constructLegacyEvent(payload, get, signature, timestamp, secret, opts) {
2092
+ if (!verifyLegacyWebhook({ payload, signature, timestamp, secret, ...opts })) {
2093
+ throw new WebhookSignatureError("signature_mismatch", describeFailure("signature_mismatch"));
2094
+ }
2095
+ const env = parseEnvelope(payload);
2096
+ return {
2097
+ id: String(env.id ?? get(LEGACY_DELIVERY_ID_HEADER) ?? ""),
2098
+ event: String(env.event ?? get(LEGACY_EVENT_HEADER) ?? ""),
2099
+ created_at: String(env.created_at ?? ""),
2100
+ mode: env.mode === "test" ? "test" : "live",
2101
+ data: env.data ?? env,
2102
+ timestamp: Number(timestamp)
2103
+ };
2104
+ }
2105
+ function parseEnvelope(payload) {
2106
+ try {
2107
+ const parsed = JSON.parse(bodyBuffer(payload).toString("utf8"));
2108
+ if (parsed === null || typeof parsed !== "object") throw new Error("not an object");
2109
+ return parsed;
2110
+ } catch {
2111
+ throw new WebhookSignatureError("invalid_payload", describeFailure("invalid_payload"));
2112
+ }
2113
+ }
2114
+ function describeFailure(reason) {
2115
+ switch (reason) {
2116
+ case "missing_header":
2117
+ return "Missing Wefunder-Signature header";
2118
+ case "malformed_header":
2119
+ return "Wefunder-Signature header is malformed (expected t=<unix>,v1=<hex>)";
2120
+ case "timestamp_out_of_tolerance":
2121
+ return "Webhook timestamp is outside the replay tolerance";
2122
+ case "signature_mismatch":
2123
+ return "Webhook signature verification failed";
2124
+ case "invalid_payload":
2125
+ return "Webhook body is not a JSON object";
2126
+ }
2127
+ }
2128
+ async function constructEventFromRequest(request, secret, opts) {
2129
+ const payload = await request.text();
2130
+ return constructEvent(payload, request.headers, secret, opts);
2131
+ }
2132
+ async function dispatchWebhook(event, handlers) {
2133
+ const specific = event.event === "default" ? void 0 : handlers[event.event];
2134
+ if (specific) {
2135
+ await specific(event);
2136
+ return true;
2137
+ }
2138
+ if (handlers.default) {
2139
+ await handlers.default(event);
2140
+ return true;
2141
+ }
2142
+ return false;
2143
+ }
1238
2144
  // Annotate the CommonJS export names for ESM import in node:
1239
2145
  0 && (module.exports = {
1240
2146
  DEFAULT_API_BASE_URL,
@@ -1242,23 +2148,33 @@ function constructEvent(payload, headers, secret, opts) {
1242
2148
  DEFAULT_AUTHORIZE_BASE_URL,
1243
2149
  DEFAULT_OAUTH_BASE_URL,
1244
2150
  DEFAULT_TOKEN_BASE_URL,
1245
- DELIVERY_ID_HEADER,
1246
- EVENT_HEADER,
2151
+ DEFAULT_TOLERANCE_SECONDS,
2152
+ LEGACY_DELIVERY_ID_HEADER,
2153
+ LEGACY_EVENT_HEADER,
2154
+ LEGACY_SIGNATURE_HEADER,
2155
+ LEGACY_TIMESTAMP_HEADER,
1247
2156
  REQUEST_ID_HEADER,
2157
+ SANDBOX_AUTHORIZE_BASE_URL,
1248
2158
  SIGNATURE_HEADER,
1249
- TIMESTAMP_HEADER,
2159
+ WebhookSignatureError,
1250
2160
  Wefunder,
1251
2161
  WefunderAuthError,
1252
2162
  WefunderError,
2163
+ checkWebhookSignature,
1253
2164
  clientCredentialsGrant,
1254
2165
  collect,
2166
+ computeWebhookSignature,
1255
2167
  constructEvent,
2168
+ constructEventFromRequest,
1256
2169
  createAuthorizationUrl,
2170
+ dispatchWebhook,
1257
2171
  exchangeCode,
1258
2172
  generatePkce,
1259
2173
  modeForToken,
1260
2174
  paginate,
2175
+ parseSignatureHeader,
1261
2176
  refreshToken,
2177
+ signWebhook,
1262
2178
  verifyWebhook
1263
2179
  });
1264
2180
  //# sourceMappingURL=index.cjs.map