@stripe/link-sdk 0.9.1 → 0.11.0

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.
@@ -23,4 +23,4 @@ export {
23
23
  REPORT_TAGS,
24
24
  REPORT_ATTEMPT_TRACE_MAX_LENGTH
25
25
  };
26
- //# sourceMappingURL=chunk-TYOT25QK.js.map
26
+ //# sourceMappingURL=chunk-6TBWEVBG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resources/interfaces.ts"],"sourcesContent":["import type {\n ApprovalDetail,\n ApprovalPolicy,\n AvailableInsightTypesPage,\n BalancesPage,\n CredentialType,\n InsightsPage,\n LineItem,\n PaymentMethod,\n RequestApprovalResponse,\n ShippingAddressRecord,\n SourcesPage,\n SpendRequest,\n Total,\n TransactionOrigin,\n TransactionsPage,\n UcpCheckout,\n UcpCheckoutWithSpendRequest,\n UcpSearchResult,\n UserInfo,\n WebBotAuthBlock,\n} from '@/types/index';\n\nexport interface GetAccessTokenOptions {\n forceRefresh?: boolean;\n}\n\nexport type AccessTokenProvider = (\n options?: GetAccessTokenOptions,\n) => Promise<string> | string;\n\nexport interface AttestationRequestParams {\n count: number;\n}\n\nexport interface AttestationRequestResult {\n tokens: string[];\n issuer: string;\n token_key_id: string;\n count: number;\n}\n\nexport interface IAttestationsResource {\n request(params: AttestationRequestParams): Promise<AttestationRequestResult>;\n}\n\nexport type HolderPublicJwk = { kty: 'OKP'; crv: 'Ed25519'; x: string };\n\nexport interface IssueIdentityCredentialParams {\n cnf: { jwk: HolderPublicJwk };\n}\n\nexport interface IssueIdentityCredentialResponse {\n credential: string;\n issuer: string;\n expires_at: string;\n}\n\nexport interface IIdentityCredentialsResource {\n issue(\n params: IssueIdentityCredentialParams,\n ): Promise<IssueIdentityCredentialResponse>;\n}\n\nexport interface CreateSpendRequestParams {\n idempotency_key?: string;\n payment_details?: string;\n credential_type?: CredentialType;\n network_id?: string;\n execution_method?: 'link_pay_token';\n merchant_account_id?: string;\n amount?: number;\n currency?: string;\n merchant_name?: string;\n merchant_url?: string;\n context: string;\n line_items?: LineItem[];\n totals?: Total[];\n request_approval?: boolean;\n test?: boolean;\n approval_details?: ApprovalDetail;\n metadata?: Record<string, string>;\n}\n\nexport interface UpdateSpendRequestParams {\n payment_details?: string;\n amount?: number;\n merchant_url?: string;\n profile_id?: string;\n merchant_id?: string;\n currency?: string;\n line_items?: LineItem[];\n totals?: Total[];\n}\n\nexport interface ISpendRequestResource {\n list(opts?: { includeHistory?: boolean }): Promise<SpendRequest[]>;\n create(params: CreateSpendRequestParams): Promise<SpendRequest>;\n update(id: string, params: UpdateSpendRequestParams): Promise<SpendRequest>;\n requestApproval(id: string): Promise<RequestApprovalResponse>;\n cancel(id: string): Promise<SpendRequest>;\n retrieve(\n id: string,\n opts?: { include?: string[] },\n ): Promise<SpendRequest | null>;\n}\n\nexport interface IPaymentMethodsResource {\n list(): Promise<PaymentMethod[]>;\n retrieve(id: string): Promise<PaymentMethod | null>;\n update(id: string, params: UpdatePaymentMethodParams): Promise<PaymentMethod>;\n}\n\nexport interface UpdatePaymentMethodParams {\n nickname: string;\n}\n\nexport interface IShippingAddressResource {\n list(): Promise<ShippingAddressRecord[]>;\n}\n\nexport interface IUserInfoResource {\n retrieve(): Promise<UserInfo>;\n}\n\nexport interface IApprovalPolicyResource {\n retrieve(): Promise<ApprovalPolicy>;\n}\n\nexport interface IWebBotAuthResource {\n signUrl(url: string): Promise<WebBotAuthBlock>;\n}\n\nexport interface ListTransactionsParams {\n limit?: number;\n starting_after?: string;\n ending_before?: string;\n start_date?: string;\n end_date?: string;\n category?: string;\n origin?: TransactionOrigin;\n sources?: string[];\n}\n\nexport interface ITransactionsResource {\n list(params?: ListTransactionsParams): Promise<TransactionsPage>;\n}\n\nexport interface ListInsightTypesParams {\n limit?: number;\n starting_after?: string;\n}\n\nexport interface ListInsightsParams extends ListInsightTypesParams {\n insights?: string[];\n}\n\nexport interface IInsightsResource {\n listAvailableTypes(\n params?: ListInsightTypesParams,\n ): Promise<AvailableInsightTypesPage>;\n list(params?: ListInsightsParams): Promise<InsightsPage>;\n}\n\nexport interface ListSourcesParams {\n limit?: number;\n starting_after?: string;\n ending_before?: string;\n}\n\nexport interface ISourcesResource {\n list(params?: ListSourcesParams): Promise<SourcesPage>;\n}\n\nexport interface ListBalancesParams {\n sources?: string[];\n limit?: number;\n starting_after?: string;\n ending_before?: string;\n}\n\nexport interface IBalancesResource {\n list(params?: ListBalancesParams): Promise<BalancesPage>;\n}\n\nexport const REPORT_OUTCOMES = ['success', 'blocked', 'abandoned'] as const;\nexport type ReportOutcome = (typeof REPORT_OUTCOMES)[number];\n\nexport const REPORT_TAGS = [\n 'stripe_checkout',\n 'captcha',\n 'anti_bot_script',\n 'cdn_block',\n 'waf_block',\n 'dns_block',\n 'rate_limited',\n 'login_required',\n '3ds_challenge',\n 'page_inaccessible',\n 'timeout',\n 'site_error',\n 'payment_declined',\n 'other',\n] as const;\nexport type ReportTag = (typeof REPORT_TAGS)[number];\n\n/**\n * Server-side cap on `attempt_trace`. Longer values are truncated by the API\n * rather than rejected, so callers do not need to pre-trim.\n */\nexport const REPORT_ATTEMPT_TRACE_MAX_LENGTH = 8000;\n\nexport interface CreateReportParams {\n domain: string;\n outcome: ReportOutcome;\n spend_request_id: string;\n tags?: ReportTag[];\n step?: string;\n freeform_context?: string;\n attempt_trace?: string;\n}\n\nexport interface ReportRecord {\n object: string;\n created_at: string;\n domain: string;\n outcome: string;\n spend_request_id: string;\n status: string;\n}\n\nexport interface IReportResource {\n create(params: CreateReportParams): Promise<ReportRecord>;\n}\n\nexport interface SearchUcpCatalogParams {\n query?: string;\n profile_id?: string;\n sku?: string;\n brand?: string[];\n category?: string[];\n color?: string[];\n size?: string[];\n material?: string[];\n gender?: string[];\n condition?: string[];\n price_min?: number;\n price_max?: number;\n currency?: string;\n availability?: string;\n sort?: string;\n group_by?: string;\n limit?: number;\n offset?: number;\n include_facets?: boolean;\n test?: boolean;\n}\n\nexport interface UcpLineItem {\n sku_id: string;\n quantity: number;\n}\n\nexport interface CreateUcpCheckoutParams {\n profile_id: string;\n line_items: UcpLineItem[];\n currency?: string;\n fulfillment_details?: Record<string, unknown>;\n test?: boolean;\n}\n\nexport interface CompleteUcpCheckoutParams {\n spend_request_id: string;\n profile_id: string;\n test?: boolean;\n}\n\nexport interface RetrieveUcpCheckoutParams {\n spend_request_id: string;\n test?: boolean;\n}\n\nexport interface IUcpResource {\n searchCatalog(params: SearchUcpCatalogParams): Promise<UcpSearchResult>;\n createCheckout(params: CreateUcpCheckoutParams): Promise<UcpCheckout>;\n completeCheckout(\n id: string,\n params: CompleteUcpCheckoutParams,\n ): Promise<UcpCheckout>;\n retrieveCheckout(\n id: string,\n params: RetrieveUcpCheckoutParams,\n ): Promise<UcpCheckoutWithSpendRequest>;\n}\n"],"mappings":";AAyLO,IAAM,kBAAkB,CAAC,WAAW,WAAW,WAAW;AAG1D,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAOO,IAAM,kCAAkC;","names":[]}
package/dist/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { LinkOptions } from '@/config';
2
- import type { IApprovalPolicyResource, IAttestationsResource, IBalancesResource, IIdentityCredentialsResource, IPaymentMethodsResource, IReportResource, IShippingAddressResource, ISourcesResource, ISpendRequestResource, ITransactionsResource, IUcpResource, IUserInfoResource, IWebBotAuthResource } from '@/resources/interfaces';
2
+ import type { IApprovalPolicyResource, IAttestationsResource, IBalancesResource, IIdentityCredentialsResource, IInsightsResource, IPaymentMethodsResource, IReportResource, IShippingAddressResource, ISourcesResource, ISpendRequestResource, ITransactionsResource, IUcpResource, IUserInfoResource, IWebBotAuthResource } from '@/resources/interfaces';
3
3
  export declare class Link {
4
4
  readonly attestations: IAttestationsResource;
5
5
  readonly identityCredentials: IIdentityCredentialsResource;
@@ -9,6 +9,7 @@ export declare class Link {
9
9
  readonly userInfo: IUserInfoResource;
10
10
  readonly approvalPolicy: IApprovalPolicyResource;
11
11
  readonly transactions: ITransactionsResource;
12
+ readonly insights: IInsightsResource;
12
13
  readonly sources: ISourcesResource;
13
14
  readonly balances: IBalancesResource;
14
15
  readonly webBotAuth: IWebBotAuthResource;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAK5C,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,4BAA4B,EAC5B,uBAAuB,EACvB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAWhC,qBAAa,IAAI;IACf,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;IAC3D,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,cAAc,EAAE,uBAAuB,CAAC;IACjD,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,uBAAuB,CAAC;IACjD,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAE3B,YAAY,OAAO,EAAE,WAAW,EAc/B;CACF;eAEc,IAAI"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAM5C,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,4BAA4B,EAC5B,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,wBAAwB,EACxB,gBAAgB,EAChB,qBAAqB,EACrB,qBAAqB,EACrB,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,wBAAwB,CAAC;AAWhC,qBAAa,IAAI;IACf,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;IAC3D,QAAQ,CAAC,aAAa,EAAE,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,cAAc,EAAE,uBAAuB,CAAC;IACjD,QAAQ,CAAC,iBAAiB,EAAE,wBAAwB,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,uBAAuB,CAAC;IACjD,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAE3B,YAAY,OAAO,EAAE,WAAW,EAe/B;CACF;eAEc,IAAI"}
package/dist/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export { LinkApiError, LinkConfigurationError, LinkResponseError, LinkSdkError,
4
4
  export { ApprovalPolicyResource } from './resources/approval-policy';
5
5
  export * from './resources/attestations';
6
6
  export { holderJwksEqual, holderJwkThumbprint, parseHolderPublicJwk, } from './resources/holder-jwk';
7
+ export { InsightsResource } from './resources/insights';
7
8
  export * from './resources/interfaces';
8
9
  export { getDuplicateSpendRequest } from './resources/spend-request';
9
10
  export * from './types/index';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,cAAc,0BAA0B,CAAC;AACzC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,GACnB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,cAAc,0BAA0B,CAAC;AACzC,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AACrE,cAAc,eAAe,CAAC"}
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@ import {
2
2
  REPORT_ATTEMPT_TRACE_MAX_LENGTH,
3
3
  REPORT_OUTCOMES,
4
4
  REPORT_TAGS
5
- } from "./chunk-TYOT25QK.js";
5
+ } from "./chunk-6TBWEVBG.js";
6
6
 
7
7
  // src/resources/approval-policy.ts
8
8
  import { z } from "zod";
@@ -1135,24 +1135,102 @@ var IdentityCredentialsResource = class extends BaseResource {
1135
1135
  }
1136
1136
  };
1137
1137
 
1138
- // src/resources/payment-methods.ts
1138
+ // src/resources/insights.ts
1139
1139
  import { z as z5 } from "zod";
1140
- var balanceDetailsSchema = z5.looseObject({
1141
- available_balance: z5.looseObject({
1142
- amount: z5.number().int(),
1143
- currency: z5.string()
1140
+ var authorizationRemediationSchema = z5.looseObject({
1141
+ scope: z5.array(z5.string()).optional(),
1142
+ authorization_details: z5.array(z5.looseObject({ type: z5.string(), actions: z5.array(z5.string()) })).optional()
1143
+ });
1144
+ var availableInsightTypesPageSchema = z5.looseObject({
1145
+ data: z5.array(
1146
+ z5.looseObject({
1147
+ id: z5.string(),
1148
+ description: z5.string(),
1149
+ authorization_remediation: authorizationRemediationSchema.nullable().optional()
1150
+ })
1151
+ ),
1152
+ has_more: z5.boolean()
1153
+ });
1154
+ var insightsPageSchema = z5.looseObject({
1155
+ data: z5.array(
1156
+ z5.looseObject({
1157
+ id: z5.string(),
1158
+ description: z5.string(),
1159
+ status: z5.string(),
1160
+ as_of: z5.number().nullable().optional(),
1161
+ data: z5.array(z5.looseObject({ label: z5.string(), value: z5.unknown() })).nullable().optional(),
1162
+ error_code: z5.string().nullable().optional(),
1163
+ error_message: z5.string().nullable().optional(),
1164
+ authorization_remediation: authorizationRemediationSchema.nullable().optional()
1165
+ })
1166
+ ),
1167
+ has_more: z5.boolean()
1168
+ });
1169
+ var InsightsResource = class extends BaseResource {
1170
+ constructor(options) {
1171
+ super(options, "/insights");
1172
+ }
1173
+ async listAvailableTypes(params = {}) {
1174
+ const url = new URL(`${this.endpoint}/available_types`);
1175
+ if (params.limit !== void 0)
1176
+ url.searchParams.set("limit", String(params.limit));
1177
+ if (params.starting_after !== void 0)
1178
+ url.searchParams.set("starting_after", params.starting_after);
1179
+ const { status, data, rawBody } = await this.apiFetch({
1180
+ method: "GET",
1181
+ url: url.toString()
1182
+ });
1183
+ if (status < 200 || status >= 300)
1184
+ this.throwApiError("list available insight types", status, data, rawBody);
1185
+ return this.parseResponse(
1186
+ "list available insight types",
1187
+ status,
1188
+ () => availableInsightTypesPageSchema.parse(
1189
+ data
1190
+ )
1191
+ );
1192
+ }
1193
+ async list(params = {}) {
1194
+ const url = new URL(this.endpoint);
1195
+ if (params.limit !== void 0)
1196
+ url.searchParams.set("limit", String(params.limit));
1197
+ if (params.starting_after !== void 0)
1198
+ url.searchParams.set("starting_after", params.starting_after);
1199
+ if (params.insights !== void 0)
1200
+ for (const insight of params.insights)
1201
+ url.searchParams.append("insights[]", insight);
1202
+ const { status, data, rawBody } = await this.apiFetch({
1203
+ method: "GET",
1204
+ url: url.toString()
1205
+ });
1206
+ if (status < 200 || status >= 300)
1207
+ this.throwApiError("list insights", status, data, rawBody);
1208
+ return this.parseResponse(
1209
+ "list insights",
1210
+ status,
1211
+ () => insightsPageSchema.parse(data)
1212
+ );
1213
+ }
1214
+ };
1215
+
1216
+ // src/resources/payment-methods.ts
1217
+ import { z as z6 } from "zod";
1218
+ var balanceDetailsSchema = z6.looseObject({
1219
+ available_balance: z6.looseObject({
1220
+ amount: z6.number().int(),
1221
+ currency: z6.string()
1144
1222
  }).optional()
1145
1223
  });
1146
- var paymentMethodSchema = z5.looseObject({
1147
- id: z5.string(),
1148
- type: z5.string(),
1149
- is_default: z5.boolean(),
1150
- name: z5.string(),
1151
- nickname: z5.optional(z5.string().nullable()),
1224
+ var paymentMethodSchema = z6.looseObject({
1225
+ id: z6.string(),
1226
+ type: z6.string(),
1227
+ is_default: z6.boolean(),
1228
+ name: z6.string(),
1229
+ nickname: z6.optional(z6.string().nullable()),
1152
1230
  balance_details: balanceDetailsSchema.nullable().optional()
1153
1231
  });
1154
- var paymentMethodsResponseSchema = z5.looseObject({
1155
- payment_details: z5.array(paymentMethodSchema)
1232
+ var paymentMethodsResponseSchema = z6.looseObject({
1233
+ payment_details: z6.array(paymentMethodSchema)
1156
1234
  });
1157
1235
  var PaymentMethodsResource = class extends BaseResource {
1158
1236
  constructor(options) {
@@ -1206,14 +1284,14 @@ var PaymentMethodsResource = class extends BaseResource {
1206
1284
  };
1207
1285
 
1208
1286
  // src/resources/report.ts
1209
- import { z as z6 } from "zod";
1210
- var reportRecordSchema = z6.looseObject({
1211
- object: z6.string(),
1212
- created_at: z6.string(),
1213
- domain: z6.string(),
1214
- outcome: z6.string(),
1215
- spend_request_id: z6.string(),
1216
- status: z6.string()
1287
+ import { z as z7 } from "zod";
1288
+ var reportRecordSchema = z7.looseObject({
1289
+ object: z7.string(),
1290
+ created_at: z7.string(),
1291
+ domain: z7.string(),
1292
+ outcome: z7.string(),
1293
+ spend_request_id: z7.string(),
1294
+ status: z7.string()
1217
1295
  });
1218
1296
  var ReportResource = class extends BaseResource {
1219
1297
  constructor(options) {
@@ -1238,15 +1316,15 @@ var ReportResource = class extends BaseResource {
1238
1316
  };
1239
1317
 
1240
1318
  // src/resources/shipping-address.ts
1241
- import { z as z7 } from "zod";
1242
- var shippingAddressSchema = z7.looseObject({
1243
- id: z7.string(),
1244
- is_default: z7.boolean(),
1245
- nickname: z7.optional(z7.string().nullable()),
1246
- address: z7.looseObject({}).nullable()
1319
+ import { z as z8 } from "zod";
1320
+ var shippingAddressSchema = z8.looseObject({
1321
+ id: z8.string(),
1322
+ is_default: z8.boolean(),
1323
+ nickname: z8.optional(z8.string().nullable()),
1324
+ address: z8.looseObject({}).nullable()
1247
1325
  });
1248
- var shippingAddressesResponseSchema = z7.looseObject({
1249
- shipping_addresses: z7.array(shippingAddressSchema)
1326
+ var shippingAddressesResponseSchema = z8.looseObject({
1327
+ shipping_addresses: z8.array(shippingAddressSchema)
1250
1328
  });
1251
1329
  var ShippingAddressResource = class extends BaseResource {
1252
1330
  constructor(options) {
@@ -1269,21 +1347,21 @@ var ShippingAddressResource = class extends BaseResource {
1269
1347
  };
1270
1348
 
1271
1349
  // src/resources/sources.ts
1272
- import { z as z8 } from "zod";
1273
- var nullableRecordSchema = z8.record(z8.string(), z8.unknown()).nullable().optional();
1274
- var sourceSchema = z8.looseObject({
1275
- id: z8.string().nullable().optional(),
1276
- name: z8.string().nullable().optional(),
1277
- type: z8.string().nullable().optional(),
1350
+ import { z as z9 } from "zod";
1351
+ var nullableRecordSchema = z9.record(z9.string(), z9.unknown()).nullable().optional();
1352
+ var sourceSchema = z9.looseObject({
1353
+ id: z9.string().nullable().optional(),
1354
+ name: z9.string().nullable().optional(),
1355
+ type: z9.string().nullable().optional(),
1278
1356
  capabilities: nullableRecordSchema,
1279
1357
  external_connection: nullableRecordSchema,
1280
- granted_actions: z8.array(z8.string()).nullable().optional(),
1358
+ granted_actions: z9.array(z9.string()).nullable().optional(),
1281
1359
  bank_account: nullableRecordSchema,
1282
1360
  card: nullableRecordSchema
1283
1361
  });
1284
- var sourcesPageSchema = z8.looseObject({
1285
- data: z8.array(sourceSchema),
1286
- has_more: z8.boolean().optional()
1362
+ var sourcesPageSchema = z9.looseObject({
1363
+ data: z9.array(sourceSchema),
1364
+ has_more: z9.boolean().optional()
1287
1365
  });
1288
1366
  var SourcesResource = class extends BaseResource {
1289
1367
  constructor(options) {
@@ -1319,34 +1397,39 @@ var SourcesResource = class extends BaseResource {
1319
1397
  };
1320
1398
 
1321
1399
  // src/resources/spend-request.ts
1322
- import { z as z9 } from "zod";
1323
- var sharedPaymentTokenSchema = z9.union([
1324
- z9.string().transform((id) => ({ id })),
1325
- z9.looseObject({ id: z9.string() })
1400
+ import { z as z10 } from "zod";
1401
+ var sharedPaymentTokenSchema = z10.union([
1402
+ z10.string().transform((id) => ({ id })),
1403
+ z10.looseObject({ id: z10.string() })
1326
1404
  ]);
1327
- var spendRequestSchema = z9.looseObject({
1328
- id: z9.string(),
1329
- payment_details: z9.string().optional(),
1330
- status: z9.string(),
1331
- line_items: z9.array(z9.unknown()).optional(),
1332
- totals: z9.array(z9.unknown()).optional(),
1333
- created_at: z9.string(),
1334
- updated_at: z9.string(),
1335
- shared_payment_token: sharedPaymentTokenSchema.nullable().optional()
1405
+ var spendRequestSchema = z10.looseObject({
1406
+ id: z10.string(),
1407
+ payment_details: z10.string().optional(),
1408
+ status: z10.string(),
1409
+ line_items: z10.array(z10.unknown()).optional(),
1410
+ totals: z10.array(z10.unknown()).optional(),
1411
+ created_at: z10.string(),
1412
+ updated_at: z10.string(),
1413
+ shared_payment_token: sharedPaymentTokenSchema.nullable().optional(),
1414
+ // interval_count defaults to 1 server-side and may be omitted.
1415
+ recurring: z10.looseObject({
1416
+ interval: z10.string(),
1417
+ interval_count: z10.number().default(1)
1418
+ }).nullable().optional()
1336
1419
  });
1337
- var spendRequestsResponseSchema = z9.looseObject({
1338
- data: z9.array(spendRequestSchema)
1420
+ var spendRequestsResponseSchema = z10.looseObject({
1421
+ data: z10.array(spendRequestSchema)
1339
1422
  });
1340
- var requestApprovalResponseSchema = z9.looseObject({
1341
- id: z9.string(),
1342
- approval_link: z9.string()
1423
+ var requestApprovalResponseSchema = z10.looseObject({
1424
+ id: z10.string(),
1425
+ approval_link: z10.string()
1343
1426
  }).transform(({ approval_link, ...response }) => ({
1344
1427
  ...response,
1345
1428
  approval_url: approval_link
1346
1429
  }));
1347
- var duplicateSpendRequestErrorSchema = z9.looseObject({
1348
- error: z9.looseObject({
1349
- duplicate_spend_request: z9.unknown().optional()
1430
+ var duplicateSpendRequestErrorSchema = z10.looseObject({
1431
+ error: z10.looseObject({
1432
+ duplicate_spend_request: z10.unknown().optional()
1350
1433
  })
1351
1434
  });
1352
1435
  function parseSpendRequest(value) {
@@ -1466,23 +1549,23 @@ var SpendRequestResource = class extends BaseResource {
1466
1549
  };
1467
1550
 
1468
1551
  // src/resources/transactions.ts
1469
- import { z as z10 } from "zod";
1470
- var transactionSchema = z10.looseObject({
1471
- id: z10.string(),
1472
- source_id: z10.string().nullable(),
1473
- amount: z10.number(),
1474
- currency: z10.string(),
1475
- created_date: z10.string(),
1476
- description: z10.string(),
1477
- origin: z10.enum(["link", "external_connection"]),
1478
- category: z10.string().nullable(),
1479
- status: z10.string()
1552
+ import { z as z11 } from "zod";
1553
+ var transactionSchema = z11.looseObject({
1554
+ id: z11.string(),
1555
+ source_id: z11.string().nullable(),
1556
+ amount: z11.number(),
1557
+ currency: z11.string(),
1558
+ created_date: z11.string(),
1559
+ description: z11.string(),
1560
+ origin: z11.enum(["link", "external_connection"]),
1561
+ category: z11.string().nullable(),
1562
+ status: z11.string()
1480
1563
  });
1481
- var transactionsPageSchema = z10.union([
1482
- z10.array(transactionSchema).transform((data) => ({ data })),
1483
- z10.looseObject({
1484
- data: z10.array(transactionSchema),
1485
- has_more: z10.boolean().optional()
1564
+ var transactionsPageSchema = z11.union([
1565
+ z11.array(transactionSchema).transform((data) => ({ data })),
1566
+ z11.looseObject({
1567
+ data: z11.array(transactionSchema),
1568
+ has_more: z11.boolean().optional()
1486
1569
  })
1487
1570
  ]);
1488
1571
  var TransactionsResource = class extends BaseResource {
@@ -1736,49 +1819,49 @@ var UcpResource = class {
1736
1819
  };
1737
1820
 
1738
1821
  // src/resources/user-info.ts
1739
- import { z as z11 } from "zod";
1740
- var rollingSpendLimitSchema = z11.object({
1741
- limit: z11.number().int().nullable(),
1742
- used: z11.number().int(),
1743
- remaining: z11.number().int().nullable()
1822
+ import { z as z12 } from "zod";
1823
+ var rollingSpendLimitSchema = z12.object({
1824
+ limit: z12.number().int().nullable(),
1825
+ used: z12.number().int(),
1826
+ remaining: z12.number().int().nullable()
1744
1827
  });
1745
- var agentWalletSpendLimitsSchema = z11.object({
1746
- per_transaction: z11.object({
1747
- limit: z11.number().int().nullable()
1828
+ var agentWalletSpendLimitsSchema = z12.object({
1829
+ per_transaction: z12.object({
1830
+ limit: z12.number().int().nullable()
1748
1831
  }),
1749
1832
  daily: rollingSpendLimitSchema,
1750
1833
  thirty_day: rollingSpendLimitSchema
1751
1834
  });
1752
- var agentWalletVerificationRequirementSchema = z11.object({
1753
- status: z11.enum([
1835
+ var agentWalletVerificationRequirementSchema = z12.object({
1836
+ status: z12.enum([
1754
1837
  "not_required",
1755
1838
  "ssn_verification",
1756
1839
  "identity_verification",
1757
1840
  "contact_support",
1758
1841
  "complete"
1759
1842
  ]),
1760
- action_url: z11.string().nullable()
1843
+ action_url: z12.string().nullable()
1761
1844
  });
1762
- var userInfoAddressSchema = z11.object({
1763
- line1: z11.string().nullable(),
1764
- line2: z11.string().nullable().optional(),
1765
- city: z11.string().nullable(),
1766
- state: z11.string().nullable(),
1767
- postal_code: z11.string().nullable(),
1768
- country: z11.string().nullable()
1845
+ var userInfoAddressSchema = z12.object({
1846
+ line1: z12.string().nullable(),
1847
+ line2: z12.string().nullable().optional(),
1848
+ city: z12.string().nullable(),
1849
+ state: z12.string().nullable(),
1850
+ postal_code: z12.string().nullable(),
1851
+ country: z12.string().nullable()
1769
1852
  }).transform(({ line2, ...address }) => ({
1770
1853
  ...address,
1771
1854
  ...line2 === void 0 ? {} : { line2 }
1772
1855
  }));
1773
- var userInfoSchema = z11.looseObject({
1774
- id: z11.string().min(1).optional(),
1775
- email: z11.string().nullable().optional(),
1776
- name: z11.string().nullable().optional(),
1777
- first_name: z11.string().nullable().optional(),
1778
- last_name: z11.string().nullable().optional(),
1779
- phone: z11.string().nullable().optional(),
1856
+ var userInfoSchema = z12.looseObject({
1857
+ id: z12.string().min(1).optional(),
1858
+ email: z12.string().nullable().optional(),
1859
+ name: z12.string().nullable().optional(),
1860
+ first_name: z12.string().nullable().optional(),
1861
+ last_name: z12.string().nullable().optional(),
1862
+ phone: z12.string().nullable().optional(),
1780
1863
  address: userInfoAddressSchema.nullable().optional(),
1781
- eligible_for_balance: z11.boolean().optional(),
1864
+ eligible_for_balance: z12.boolean().optional(),
1782
1865
  agent_wallet_spend_limits: agentWalletSpendLimitsSchema.optional(),
1783
1866
  agent_wallet_step_up: agentWalletVerificationRequirementSchema.optional()
1784
1867
  }).transform(
@@ -1827,16 +1910,16 @@ var UserInfoResource = class extends BaseResource {
1827
1910
  };
1828
1911
 
1829
1912
  // src/resources/web-bot-auth.ts
1830
- import { z as z12 } from "zod";
1913
+ import { z as z13 } from "zod";
1831
1914
  var EXPIRY_BUFFER_MS = 3e4;
1832
- var webBotAuthBlockSchema = z12.looseObject({
1833
- signature: z12.string(),
1834
- signature_input: z12.string(),
1835
- signature_agent: z12.string(),
1836
- authority: z12.string(),
1837
- expires_at: z12.string()
1915
+ var webBotAuthBlockSchema = z13.looseObject({
1916
+ signature: z13.string(),
1917
+ signature_input: z13.string(),
1918
+ signature_agent: z13.string(),
1919
+ authority: z13.string(),
1920
+ expires_at: z13.string()
1838
1921
  });
1839
- var webBotAuthResponseSchema = z12.looseObject({
1922
+ var webBotAuthResponseSchema = z13.looseObject({
1840
1923
  web_bot_auth: webBotAuthBlockSchema
1841
1924
  });
1842
1925
  var WebBotAuthResource = class extends BaseResource {
@@ -1890,6 +1973,7 @@ var Link = class {
1890
1973
  userInfo;
1891
1974
  approvalPolicy;
1892
1975
  transactions;
1976
+ insights;
1893
1977
  sources;
1894
1978
  balances;
1895
1979
  webBotAuth;
@@ -1904,6 +1988,7 @@ var Link = class {
1904
1988
  this.userInfo = new UserInfoResource(options);
1905
1989
  this.approvalPolicy = new ApprovalPolicyResource(options);
1906
1990
  this.transactions = new TransactionsResource(options);
1991
+ this.insights = new InsightsResource(options);
1907
1992
  this.sources = new SourcesResource(options);
1908
1993
  this.balances = new BalancesResource(options);
1909
1994
  this.webBotAuth = new WebBotAuthResource(options);
@@ -1915,6 +2000,7 @@ var client_default = Link;
1915
2000
  export {
1916
2001
  ApprovalPolicyResource,
1917
2002
  AttestationsResource,
2003
+ InsightsResource,
1918
2004
  Link,
1919
2005
  LinkApiError,
1920
2006
  LinkConfigurationError,