agentref 5.0.0 → 5.0.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ - Removed obsolete merchant-scoped integration methods from the active SDK surface.
6
+ - Aligned `merchant.get()` / `merchant.update()` types with the final merchant profile contract.
7
+ - Added program-scoped integration methods on `programs`: Stripe connect/disconnect and domain verification/status/removal.
8
+ - Added `webhooks` resource with list/create/get/update/delete/rotate-secret support.
9
+
3
10
  ## 1.0.5
4
11
 
5
12
  - **Fix:** `merchant.updatePayoutInfo()` now sends `PATCH` instead of `PUT` to match the API contract.
package/README.md CHANGED
@@ -21,14 +21,14 @@ console.log(programs.meta.requestId)
21
21
  ## Authentication
22
22
 
23
23
  - API key is sent as `Authorization: Bearer <key>`.
24
- - Supported key prefixes: `ak_live_*`, `ak_aff_*`, `ak_onb_*`.
24
+ - Supported key prefixes: `ak_live_*`, `ak_aff_*`.
25
25
  - You can pass `apiKey` directly or use `AGENTREF_API_KEY`.
26
26
  - Default behavior hard-fails in browser contexts to prevent API key exposure.
27
27
 
28
28
  ## Resources
29
29
 
30
30
  - `client.programs`
31
- - `list`, `listAll`, `get`, `create`, `update`, `delete`, `stats`, `listAffiliates`, `listCoupons`, `createCoupon`, `deleteCoupon`, `listInvites`, `createInvite`, `updateMarketplace`
31
+ - `list`, `listAll`, `get`, `create`, `update`, `delete`, `stats`, `listAffiliates`, `listCoupons`, `createCoupon`, `deleteCoupon`, `listInvites`, `createInvite`, `updateMarketplace`, `connectStripe`, `disconnectStripe`, `verifyDomain`, `removeDomainVerification`, `getDomainStatus`
32
32
  - `client.affiliates`
33
33
  - `list`, `get`, `approve`, `block`, `unblock`
34
34
  - `client.conversions`
@@ -40,7 +40,9 @@ console.log(programs.meta.requestId)
40
40
  - `client.billing`
41
41
  - `current`, `tiers`, `subscribe`
42
42
  - `client.merchant`
43
- - `get`, `update`, `connectStripe`, `domainStatus`
43
+ - `get`, `update`, `getPayoutInfo`, `updatePayoutInfo`, `getNotifications`, `updateNotifications`
44
+ - `client.webhooks`
45
+ - `list`, `create`, `get`, `update`, `delete`, `rotateSecret`
44
46
 
45
47
  ## Pagination
46
48
 
package/dist/index.cjs CHANGED
@@ -93,7 +93,7 @@ var SAFE_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD"]);
93
93
  var DEFAULT_BASE_URL = "https://www.agentref.dev/api/v1";
94
94
  var DEFAULT_TIMEOUT = 3e4;
95
95
  var DEFAULT_MAX_RETRIES = 2;
96
- var VERSION = true ? "5.0.0" : "0.0.0";
96
+ var VERSION = true ? "5.0.1" : "0.0.0";
97
97
  function hasUsableIdempotencyKey(idempotencyKey) {
98
98
  return typeof idempotencyKey === "string" && idempotencyKey.trim().length > 0;
99
99
  }
@@ -360,20 +360,6 @@ var MerchantResource = class {
360
360
  });
361
361
  return envelope.data;
362
362
  }
363
- async connectStripe() {
364
- const envelope = await this.http.request({
365
- method: "POST",
366
- path: "/merchant/connect-stripe"
367
- });
368
- return envelope.data;
369
- }
370
- async domainStatus() {
371
- const envelope = await this.http.request({
372
- method: "GET",
373
- path: "/merchant/domain-status"
374
- });
375
- return envelope.data;
376
- }
377
363
  async getPayoutInfo() {
378
364
  const envelope = await this.http.request({
379
365
  method: "GET",
@@ -549,6 +535,95 @@ var ProgramsResource = class {
549
535
  });
550
536
  return envelope.data;
551
537
  }
538
+ async connectStripe(id, data) {
539
+ const envelope = await this.http.request({
540
+ method: "POST",
541
+ path: `/programs/${id}/connect-stripe`,
542
+ body: data
543
+ });
544
+ return envelope.data;
545
+ }
546
+ async disconnectStripe(id) {
547
+ const envelope = await this.http.request({
548
+ method: "DELETE",
549
+ path: `/programs/${id}/connect-stripe`
550
+ });
551
+ return envelope.data;
552
+ }
553
+ async verifyDomain(id, data) {
554
+ const envelope = await this.http.request({
555
+ method: "POST",
556
+ path: `/programs/${id}/verify-domain`,
557
+ body: data
558
+ });
559
+ return envelope.data;
560
+ }
561
+ async removeDomainVerification(id) {
562
+ const envelope = await this.http.request({
563
+ method: "DELETE",
564
+ path: `/programs/${id}/verify-domain`
565
+ });
566
+ return envelope.data;
567
+ }
568
+ async getDomainStatus(id) {
569
+ const envelope = await this.http.request({
570
+ method: "GET",
571
+ path: `/programs/${id}/verify-domain/status`
572
+ });
573
+ return envelope.data;
574
+ }
575
+ };
576
+
577
+ // src/resources/webhooks.ts
578
+ var WebhooksResource = class {
579
+ constructor(http) {
580
+ this.http = http;
581
+ }
582
+ async list(params) {
583
+ const envelope = await this.http.request({
584
+ method: "GET",
585
+ path: "/webhooks",
586
+ query: params
587
+ });
588
+ return envelope.data;
589
+ }
590
+ async create(data) {
591
+ const envelope = await this.http.request({
592
+ method: "POST",
593
+ path: "/webhooks",
594
+ body: data
595
+ });
596
+ return envelope.data;
597
+ }
598
+ async get(id) {
599
+ const envelope = await this.http.request({
600
+ method: "GET",
601
+ path: `/webhooks/${id}`
602
+ });
603
+ return envelope.data;
604
+ }
605
+ async update(id, data) {
606
+ const envelope = await this.http.request({
607
+ method: "PATCH",
608
+ path: `/webhooks/${id}`,
609
+ body: data
610
+ });
611
+ return envelope.data;
612
+ }
613
+ async delete(id) {
614
+ const envelope = await this.http.request({
615
+ method: "DELETE",
616
+ path: `/webhooks/${id}`
617
+ });
618
+ return envelope.data;
619
+ }
620
+ async rotateSecret(id) {
621
+ const envelope = await this.http.request({
622
+ method: "POST",
623
+ path: `/webhooks/${id}/rotate-secret`
624
+ });
625
+ return envelope.data;
626
+ }
552
627
  };
553
628
 
554
629
  // src/client.ts
@@ -562,6 +637,7 @@ var AgentRef = class {
562
637
  this.flags = new FlagsResource(http);
563
638
  this.billing = new BillingResource(http);
564
639
  this.merchant = new MerchantResource(http);
640
+ this.webhooks = new WebhooksResource(http);
565
641
  }
566
642
  };
567
643
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/http.ts","../src/resources/affiliates.ts","../src/resources/billing.ts","../src/resources/conversions.ts","../src/resources/flags.ts","../src/resources/merchant.ts","../src/resources/payouts.ts","../src/resources/programs.ts","../src/client.ts"],"sourcesContent":["export { AgentRef } from './client.js'\nexport {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nexport type {\n AgentRefConfig,\n Affiliate,\n AffiliateSortBy,\n AffiliateStatus,\n BillingStatus,\n BillingTier,\n BillingTierId,\n CommissionType,\n CreateInviteParams,\n CreatePayoutParams,\n Conversion,\n ConversionStats,\n ConversionStatus,\n Coupon,\n CreateCouponParams,\n CreateProgramParams,\n Flag,\n FlagStats,\n FlagStatus,\n FlagType,\n Invite,\n Merchant,\n MutationOptions,\n NotificationPreferences,\n PaginatedResponse,\n PaginationMeta,\n PayoutInfo,\n PendingAffiliate,\n Payout,\n ProgramMarketplaceVisibility,\n ProgramMarketplaceStatus,\n PayoutStats,\n PayoutStatus,\n Program,\n ProgramStats,\n ProgramStatus,\n SortOrder,\n StripeConnectSession,\n MerchantDomainStatus,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n UpdateProgramMarketplaceParams,\n ResolveFlagParams,\n UpdateProgramParams,\n} from './types/index.js'\n","export class AgentRefError extends Error {\n readonly code: string\n readonly status: number\n readonly requestId: string\n\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message)\n this.name = 'AgentRefError'\n this.code = code\n this.status = status\n this.requestId = requestId\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class AuthError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 401, requestId)\n this.name = 'AuthError'\n }\n}\n\nexport class ForbiddenError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 403, requestId)\n this.name = 'ForbiddenError'\n }\n}\n\nexport class ValidationError extends AgentRefError {\n readonly details: unknown\n\n constructor(message: string, code: string, requestId: string, details?: unknown) {\n super(message, code, 400, requestId)\n this.name = 'ValidationError'\n this.details = details\n }\n}\n\nexport class NotFoundError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 404, requestId)\n this.name = 'NotFoundError'\n }\n}\n\nexport class ConflictError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 409, requestId)\n this.name = 'ConflictError'\n }\n}\n\nexport class RateLimitError extends AgentRefError {\n readonly retryAfter: number\n\n constructor(message: string, code: string, requestId: string, retryAfter: number) {\n super(message, code, 429, requestId)\n this.name = 'RateLimitError'\n this.retryAfter = retryAfter\n }\n}\n\nexport class ServerError extends AgentRefError {\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message, code, status, requestId)\n this.name = 'ServerError'\n }\n}\n","import {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nimport type { AgentRefConfig } from './types/index.js'\n\nexport type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nconst SAFE_METHODS: ReadonlySet<HttpMethod> = new Set(['GET', 'HEAD'])\n\nexport interface RequestOptions {\n method: HttpMethod\n path: string\n body?: unknown\n query?: Record<string, string | number | boolean | undefined>\n idempotencyKey?: string\n}\n\nconst DEFAULT_BASE_URL = 'https://www.agentref.dev/api/v1'\nconst DEFAULT_TIMEOUT = 30_000\nconst DEFAULT_MAX_RETRIES = 2\n\ndeclare const __SDK_VERSION__: string\nconst VERSION = typeof __SDK_VERSION__ === 'string' ? __SDK_VERSION__ : '0.0.0'\n\nfunction hasUsableIdempotencyKey(idempotencyKey: string | undefined): boolean {\n return typeof idempotencyKey === 'string' && idempotencyKey.trim().length > 0\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly maxRetries: number\n\n constructor(config: AgentRefConfig = {}) {\n if (typeof window !== 'undefined' && !config.dangerouslyAllowBrowser) {\n throw new Error(\n '[AgentRef] Refusing to initialize in browser context. API keys must not be exposed client-side. Use a server-side proxy to call the AgentRef API instead. To override: set dangerouslyAllowBrowser: true (understand the security implications first).'\n )\n }\n\n const apiKey = config.apiKey ?? process.env['AGENTREF_API_KEY']\n if (!apiKey) {\n throw new Error(\n '[AgentRef] API key is required. Pass it as apiKey or set the AGENTREF_API_KEY environment variable.'\n )\n }\n\n this.apiKey = apiKey\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '')\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query)\n const isSafe = SAFE_METHODS.has(options.method)\n const hasIdempotency = options.method === 'POST' && hasUsableIdempotencyKey(options.idempotencyKey)\n const canRetry = isSafe || hasIdempotency\n const maxAttempts = canRetry ? this.maxRetries + 1 : 1\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n let response: Response\n\n try {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': `agentref-node/${VERSION}`,\n }\n\n if (hasIdempotency) {\n headers['Idempotency-Key'] = options.idempotencyKey!.trim()\n }\n\n response = await fetch(url, {\n method: options.method,\n headers,\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\n signal: AbortSignal.timeout(this.timeout),\n })\n } catch (error) {\n if (canRetry && attempt < maxAttempts - 1) {\n await this.wait(this.backoff(attempt))\n continue\n }\n throw error\n }\n\n if (!response.ok) {\n const parsedError = await this.parseError(response)\n\n if (canRetry && this.isRetryable(response.status) && attempt < maxAttempts - 1) {\n const delay =\n response.status === 429\n ? this.retryAfterToMs(response.headers.get('Retry-After'))\n : this.backoff(attempt)\n await this.wait(delay)\n continue\n }\n\n throw parsedError\n }\n\n return response.json() as Promise<T>\n }\n\n throw new ServerError('Request failed after retries', 'REQUEST_RETRY_EXHAUSTED', 500, '')\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n const url = new URL(`${this.baseUrl}${normalizedPath}`)\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value))\n }\n }\n }\n\n return url.toString()\n }\n\n private async parseError(response: Response): Promise<AgentRefError> {\n const json = (await response.json().catch(() => ({}))) as {\n error?: { code?: string; message?: string; details?: unknown }\n meta?: { requestId?: string }\n }\n\n const code = json.error?.code ?? 'UNKNOWN_ERROR'\n const message = json.error?.message ?? response.statusText\n const requestId = json.meta?.requestId ?? ''\n const details = json.error?.details\n\n if (response.status === 400) return new ValidationError(message, code, requestId, details)\n if (response.status === 401) return new AuthError(message, code, requestId)\n if (response.status === 403) return new ForbiddenError(message, code, requestId)\n if (response.status === 404) return new NotFoundError(message, code, requestId)\n if (response.status === 409) return new ConflictError(message, code, requestId)\n if (response.status === 429) {\n return new RateLimitError(message, code, requestId, this.retryAfterToSeconds(response.headers.get('Retry-After')))\n }\n\n return new ServerError(message, code, response.status, requestId)\n }\n\n private isRetryable(status: number): boolean {\n return status === 429 || status >= 500\n }\n\n private retryAfterToSeconds(headerValue: string | null): number {\n if (!headerValue) return 60\n\n const numericSeconds = Number(headerValue)\n if (!Number.isNaN(numericSeconds) && numericSeconds >= 0) {\n return Math.ceil(numericSeconds)\n }\n\n const asDate = Date.parse(headerValue)\n if (!Number.isNaN(asDate)) {\n const deltaMs = asDate - Date.now()\n return Math.max(0, Math.ceil(deltaMs / 1000))\n }\n\n return 60\n }\n\n private retryAfterToMs(headerValue: string | null): number {\n return this.retryAfterToSeconds(headerValue) * 1000\n }\n\n private wait(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n }\n\n private backoff(attempt: number): number {\n return 500 * Math.pow(2, attempt)\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Affiliate, AffiliateSortBy, AffiliateStatus, MutationOptions, PaginatedResponse, SortOrder } from '../types/index.js'\n\nexport class AffiliatesResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n includeBlocked?: boolean\n search?: string\n sortBy?: AffiliateSortBy\n sortOrder?: SortOrder\n status?: AffiliateStatus\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({ method: 'GET', path: '/affiliates', query: params })\n }\n\n async get(id: string, options?: { include?: 'stats' }): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'GET',\n path: `/affiliates/${id}`,\n query: options?.include ? { include: options.include } : undefined,\n })\n return envelope.data\n }\n\n async approve(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/approve`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async block(id: string, data?: { reason?: string }, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/block`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async unblock(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/unblock`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { BillingStatus, BillingTier, MutationOptions } from '../types/index.js'\n\nexport class BillingResource {\n constructor(private readonly http: HttpClient) {}\n\n async current(): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'GET',\n path: '/billing',\n })\n return envelope.data\n }\n\n async tiers(): Promise<BillingTier[]> {\n const envelope = await this.http.request<{ data: BillingTier[]; meta: unknown }>({\n method: 'GET',\n path: '/billing/tiers',\n })\n return envelope.data\n }\n\n async subscribe(data: { tier: 'starter' | 'growth' | 'pro' | 'scale' }, options?: MutationOptions): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'POST',\n path: '/billing/subscribe',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Conversion, ConversionStats, PaginatedResponse } from '../types/index.js'\n\nexport class ConversionsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: string\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Conversion>> {\n return this.http.request({ method: 'GET', path: '/conversions', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<ConversionStats> {\n const envelope = await this.http.request<{ data: ConversionStats; meta: unknown }>({\n method: 'GET',\n path: '/conversions/stats',\n query: params,\n })\n return envelope.data\n }\n\n async recent(params?: { limit?: number }): Promise<Conversion[]> {\n const envelope = await this.http.request<{ data: Conversion[]; meta: unknown }>({\n method: 'GET',\n path: '/conversions/recent',\n query: params,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Flag, FlagStats, MutationOptions, PaginatedResponse, ResolveFlagParams } from '../types/index.js'\n\nexport class FlagsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n status?: string\n type?: string\n affiliateId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Flag>> {\n return this.http.request({ method: 'GET', path: '/flags', query: params })\n }\n\n async stats(): Promise<FlagStats> {\n const envelope = await this.http.request<{ data: FlagStats; meta: unknown }>({\n method: 'GET',\n path: '/flags/stats',\n })\n return envelope.data\n }\n\n async resolve(id: string, data: ResolveFlagParams, options?: MutationOptions): Promise<Flag> {\n const envelope = await this.http.request<{ data: Flag; meta: unknown }>({\n method: 'POST',\n path: `/flags/${id}/resolve`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Merchant,\n MerchantDomainStatus,\n NotificationPreferences,\n PayoutInfo,\n StripeConnectSession,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n} from '../types/index.js'\n\nexport class MerchantResource {\n constructor(private readonly http: HttpClient) {}\n\n async get(): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'GET',\n path: '/merchant',\n })\n return envelope.data\n }\n\n async update(data: UpdateMerchantParams): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'PATCH',\n path: '/merchant',\n body: data,\n })\n return envelope.data\n }\n\n async connectStripe(): Promise<StripeConnectSession> {\n const envelope = await this.http.request<{ data: StripeConnectSession; meta: unknown }>({\n method: 'POST',\n path: '/merchant/connect-stripe',\n })\n return envelope.data\n }\n\n async domainStatus(): Promise<MerchantDomainStatus> {\n const envelope = await this.http.request<{ data: MerchantDomainStatus; meta: unknown }>({\n method: 'GET',\n path: '/merchant/domain-status',\n })\n return envelope.data\n }\n\n async getPayoutInfo(): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'GET',\n path: '/me/payout-info',\n })\n return envelope.data\n }\n\n async updatePayoutInfo(data: UpdatePayoutInfoParams): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'PATCH',\n path: '/me/payout-info',\n body: data,\n })\n return envelope.data\n }\n\n async getNotifications(): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'GET',\n path: '/merchant/notifications',\n })\n return envelope.data\n }\n\n async updateNotifications(data: UpdateNotificationPreferencesParams): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'PUT',\n path: '/merchant/notifications',\n body: data,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { CreatePayoutParams, MutationOptions, PaginatedResponse, PendingAffiliate, Payout, PayoutStats, PayoutStatus } from '../types/index.js'\n\nexport class PayoutsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: PayoutStatus\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Payout>> {\n return this.http.request({ method: 'GET', path: '/payouts', query: params })\n }\n\n listPending(params?: {\n programId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<PendingAffiliate>> {\n return this.http.request({ method: 'GET', path: '/payouts/pending', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<PayoutStats> {\n const envelope = await this.http.request<{ data: PayoutStats; meta: unknown }>({\n method: 'GET',\n path: '/payouts/stats',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreatePayoutParams, options?: MutationOptions): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'POST',\n path: '/payouts',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Affiliate,\n Coupon,\n CreateCouponParams,\n CreateInviteParams,\n CreateProgramParams,\n Invite,\n MutationOptions,\n PaginatedResponse,\n Program,\n ProgramStats,\n ProgramStatus,\n UpdateProgramMarketplaceParams,\n UpdateProgramParams,\n} from '../types/index.js'\n\nexport class ProgramsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n status?: ProgramStatus\n }): Promise<PaginatedResponse<Program>> {\n return this.http.request({ method: 'GET', path: '/programs', query: params })\n }\n\n async *listAll(params?: {\n pageSize?: number\n }): AsyncGenerator<Program> {\n let page = 1\n const pageSize = params?.pageSize ?? 100\n\n while (true) {\n const response = await this.list({ page, limit: pageSize })\n yield* response.data\n\n if (!response.meta.hasMore) {\n break\n }\n\n page += 1\n }\n }\n\n async get(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async create(data: CreateProgramParams, options?: MutationOptions): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'POST',\n path: '/programs',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateProgramParams): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async stats(id: string, params?: { period?: string }): Promise<ProgramStats> {\n const envelope = await this.http.request<{ data: ProgramStats; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/stats`,\n query: params,\n })\n return envelope.data\n }\n\n listAffiliates(\n id: string,\n params?: { includeBlocked?: boolean; cursor?: string; limit?: number; page?: number; pageSize?: number; offset?: number }\n ): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({\n method: 'GET',\n path: `/programs/${id}/affiliates`,\n query: params,\n })\n }\n\n async listCoupons(id: string): Promise<Coupon[]> {\n const envelope = await this.http.request<{ data: Coupon[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/coupons`,\n })\n return envelope.data\n }\n\n async createCoupon(id: string, data: CreateCouponParams, options?: MutationOptions): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/coupons`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async createInvite(\n id: string,\n data: CreateInviteParams,\n options?: MutationOptions\n ): Promise<Invite> {\n const envelope = await this.http.request<{ data: Invite; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/invites`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async listInvites(id: string): Promise<Invite[]> {\n const envelope = await this.http.request<{ data: Invite[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/invites`,\n })\n return envelope.data\n }\n\n async deleteCoupon(couponId: string): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'DELETE',\n path: `/coupons/${couponId}`,\n })\n return envelope.data\n }\n\n async updateMarketplace(id: string, data: UpdateProgramMarketplaceParams): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}/marketplace`,\n body: data,\n })\n return envelope.data\n }\n}\n","import { HttpClient } from './http.js'\nimport type { AgentRefConfig } from './types/index.js'\nimport { AffiliatesResource } from './resources/affiliates.js'\nimport { BillingResource } from './resources/billing.js'\nimport { ConversionsResource } from './resources/conversions.js'\nimport { FlagsResource } from './resources/flags.js'\nimport { MerchantResource } from './resources/merchant.js'\nimport { PayoutsResource } from './resources/payouts.js'\nimport { ProgramsResource } from './resources/programs.js'\n\nexport class AgentRef {\n readonly programs: ProgramsResource\n readonly affiliates: AffiliatesResource\n readonly conversions: ConversionsResource\n readonly payouts: PayoutsResource\n readonly flags: FlagsResource\n readonly billing: BillingResource\n readonly merchant: MerchantResource\n\n constructor(config?: AgentRefConfig) {\n const http = new HttpClient(config)\n\n this.programs = new ProgramsResource(http)\n this.affiliates = new AffiliatesResource(http)\n this.conversions = new ConversionsResource(http)\n this.payouts = new PayoutsResource(http)\n this.flags = new FlagsResource(http)\n this.billing = new BillingResource(http)\n this.merchant = new MerchantResource(http)\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/http.ts","../src/resources/affiliates.ts","../src/resources/billing.ts","../src/resources/conversions.ts","../src/resources/flags.ts","../src/resources/merchant.ts","../src/resources/payouts.ts","../src/resources/programs.ts","../src/resources/webhooks.ts","../src/client.ts"],"sourcesContent":["export { AgentRef } from './client.js'\nexport {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nexport type {\n AgentRefConfig,\n Affiliate,\n AffiliateSortBy,\n AffiliateStatus,\n BillingStatus,\n BillingTier,\n BillingTierId,\n CommissionType,\n CreateInviteParams,\n CreatePayoutParams,\n Conversion,\n ConversionStats,\n ConversionStatus,\n Coupon,\n CreateCouponParams,\n CreateProgramParams,\n Flag,\n FlagStats,\n FlagStatus,\n FlagType,\n Invite,\n Merchant,\n MutationOptions,\n NotificationPreferences,\n PaginatedResponse,\n PaginationMeta,\n PayoutInfo,\n PendingAffiliate,\n Payout,\n ProgramMarketplaceVisibility,\n ProgramMarketplaceStatus,\n ProgramReadiness,\n ProgramDetail,\n PayoutStats,\n PayoutStatus,\n Program,\n ProgramStats,\n ProgramStatus,\n SortOrder,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n UpdateProgramMarketplaceParams,\n ResolveFlagParams,\n UpdateProgramParams,\n BillingRequirementStatus,\n ConnectProgramStripeParams,\n ConnectProgramStripeResponse,\n DisconnectProgramStripeResponse,\n ProgramDomainVerificationInitResponse,\n ProgramDomainVerificationStatusResponse,\n StripeConnectMethod,\n SuccessResponse,\n WebhookEventType,\n WebhookEndpoint,\n WebhookEndpointStatus,\n CreateWebhookEndpointParams,\n UpdateWebhookEndpointParams,\n WebhookSecretResponse,\n} from './types/index.js'\n","export class AgentRefError extends Error {\n readonly code: string\n readonly status: number\n readonly requestId: string\n\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message)\n this.name = 'AgentRefError'\n this.code = code\n this.status = status\n this.requestId = requestId\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class AuthError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 401, requestId)\n this.name = 'AuthError'\n }\n}\n\nexport class ForbiddenError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 403, requestId)\n this.name = 'ForbiddenError'\n }\n}\n\nexport class ValidationError extends AgentRefError {\n readonly details: unknown\n\n constructor(message: string, code: string, requestId: string, details?: unknown) {\n super(message, code, 400, requestId)\n this.name = 'ValidationError'\n this.details = details\n }\n}\n\nexport class NotFoundError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 404, requestId)\n this.name = 'NotFoundError'\n }\n}\n\nexport class ConflictError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 409, requestId)\n this.name = 'ConflictError'\n }\n}\n\nexport class RateLimitError extends AgentRefError {\n readonly retryAfter: number\n\n constructor(message: string, code: string, requestId: string, retryAfter: number) {\n super(message, code, 429, requestId)\n this.name = 'RateLimitError'\n this.retryAfter = retryAfter\n }\n}\n\nexport class ServerError extends AgentRefError {\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message, code, status, requestId)\n this.name = 'ServerError'\n }\n}\n","import {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nimport type { AgentRefConfig } from './types/index.js'\n\nexport type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nconst SAFE_METHODS: ReadonlySet<HttpMethod> = new Set(['GET', 'HEAD'])\n\nexport interface RequestOptions {\n method: HttpMethod\n path: string\n body?: unknown\n query?: Record<string, string | number | boolean | undefined>\n idempotencyKey?: string\n}\n\nconst DEFAULT_BASE_URL = 'https://www.agentref.dev/api/v1'\nconst DEFAULT_TIMEOUT = 30_000\nconst DEFAULT_MAX_RETRIES = 2\n\ndeclare const __SDK_VERSION__: string\nconst VERSION = typeof __SDK_VERSION__ === 'string' ? __SDK_VERSION__ : '0.0.0'\n\nfunction hasUsableIdempotencyKey(idempotencyKey: string | undefined): boolean {\n return typeof idempotencyKey === 'string' && idempotencyKey.trim().length > 0\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly maxRetries: number\n\n constructor(config: AgentRefConfig = {}) {\n if (typeof window !== 'undefined' && !config.dangerouslyAllowBrowser) {\n throw new Error(\n '[AgentRef] Refusing to initialize in browser context. API keys must not be exposed client-side. Use a server-side proxy to call the AgentRef API instead. To override: set dangerouslyAllowBrowser: true (understand the security implications first).'\n )\n }\n\n const apiKey = config.apiKey ?? process.env['AGENTREF_API_KEY']\n if (!apiKey) {\n throw new Error(\n '[AgentRef] API key is required. Pass it as apiKey or set the AGENTREF_API_KEY environment variable.'\n )\n }\n\n this.apiKey = apiKey\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '')\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query)\n const isSafe = SAFE_METHODS.has(options.method)\n const hasIdempotency = options.method === 'POST' && hasUsableIdempotencyKey(options.idempotencyKey)\n const canRetry = isSafe || hasIdempotency\n const maxAttempts = canRetry ? this.maxRetries + 1 : 1\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n let response: Response\n\n try {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': `agentref-node/${VERSION}`,\n }\n\n if (hasIdempotency) {\n headers['Idempotency-Key'] = options.idempotencyKey!.trim()\n }\n\n response = await fetch(url, {\n method: options.method,\n headers,\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\n signal: AbortSignal.timeout(this.timeout),\n })\n } catch (error) {\n if (canRetry && attempt < maxAttempts - 1) {\n await this.wait(this.backoff(attempt))\n continue\n }\n throw error\n }\n\n if (!response.ok) {\n const parsedError = await this.parseError(response)\n\n if (canRetry && this.isRetryable(response.status) && attempt < maxAttempts - 1) {\n const delay =\n response.status === 429\n ? this.retryAfterToMs(response.headers.get('Retry-After'))\n : this.backoff(attempt)\n await this.wait(delay)\n continue\n }\n\n throw parsedError\n }\n\n return response.json() as Promise<T>\n }\n\n throw new ServerError('Request failed after retries', 'REQUEST_RETRY_EXHAUSTED', 500, '')\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n const url = new URL(`${this.baseUrl}${normalizedPath}`)\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value))\n }\n }\n }\n\n return url.toString()\n }\n\n private async parseError(response: Response): Promise<AgentRefError> {\n const json = (await response.json().catch(() => ({}))) as {\n error?: { code?: string; message?: string; details?: unknown }\n meta?: { requestId?: string }\n }\n\n const code = json.error?.code ?? 'UNKNOWN_ERROR'\n const message = json.error?.message ?? response.statusText\n const requestId = json.meta?.requestId ?? ''\n const details = json.error?.details\n\n if (response.status === 400) return new ValidationError(message, code, requestId, details)\n if (response.status === 401) return new AuthError(message, code, requestId)\n if (response.status === 403) return new ForbiddenError(message, code, requestId)\n if (response.status === 404) return new NotFoundError(message, code, requestId)\n if (response.status === 409) return new ConflictError(message, code, requestId)\n if (response.status === 429) {\n return new RateLimitError(message, code, requestId, this.retryAfterToSeconds(response.headers.get('Retry-After')))\n }\n\n return new ServerError(message, code, response.status, requestId)\n }\n\n private isRetryable(status: number): boolean {\n return status === 429 || status >= 500\n }\n\n private retryAfterToSeconds(headerValue: string | null): number {\n if (!headerValue) return 60\n\n const numericSeconds = Number(headerValue)\n if (!Number.isNaN(numericSeconds) && numericSeconds >= 0) {\n return Math.ceil(numericSeconds)\n }\n\n const asDate = Date.parse(headerValue)\n if (!Number.isNaN(asDate)) {\n const deltaMs = asDate - Date.now()\n return Math.max(0, Math.ceil(deltaMs / 1000))\n }\n\n return 60\n }\n\n private retryAfterToMs(headerValue: string | null): number {\n return this.retryAfterToSeconds(headerValue) * 1000\n }\n\n private wait(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n }\n\n private backoff(attempt: number): number {\n return 500 * Math.pow(2, attempt)\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Affiliate, AffiliateSortBy, AffiliateStatus, MutationOptions, PaginatedResponse, SortOrder } from '../types/index.js'\n\nexport class AffiliatesResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n includeBlocked?: boolean\n search?: string\n sortBy?: AffiliateSortBy\n sortOrder?: SortOrder\n status?: AffiliateStatus\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({ method: 'GET', path: '/affiliates', query: params })\n }\n\n async get(id: string, options?: { include?: 'stats' }): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'GET',\n path: `/affiliates/${id}`,\n query: options?.include ? { include: options.include } : undefined,\n })\n return envelope.data\n }\n\n async approve(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/approve`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async block(id: string, data?: { reason?: string }, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/block`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async unblock(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/unblock`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { BillingStatus, BillingTier, MutationOptions } from '../types/index.js'\n\nexport class BillingResource {\n constructor(private readonly http: HttpClient) {}\n\n async current(): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'GET',\n path: '/billing',\n })\n return envelope.data\n }\n\n async tiers(): Promise<BillingTier[]> {\n const envelope = await this.http.request<{ data: BillingTier[]; meta: unknown }>({\n method: 'GET',\n path: '/billing/tiers',\n })\n return envelope.data\n }\n\n async subscribe(data: { tier: 'starter' | 'growth' | 'pro' | 'scale' }, options?: MutationOptions): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'POST',\n path: '/billing/subscribe',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Conversion, ConversionStats, PaginatedResponse } from '../types/index.js'\n\nexport class ConversionsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: string\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Conversion>> {\n return this.http.request({ method: 'GET', path: '/conversions', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<ConversionStats> {\n const envelope = await this.http.request<{ data: ConversionStats; meta: unknown }>({\n method: 'GET',\n path: '/conversions/stats',\n query: params,\n })\n return envelope.data\n }\n\n async recent(params?: { limit?: number }): Promise<Conversion[]> {\n const envelope = await this.http.request<{ data: Conversion[]; meta: unknown }>({\n method: 'GET',\n path: '/conversions/recent',\n query: params,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Flag, FlagStats, MutationOptions, PaginatedResponse, ResolveFlagParams } from '../types/index.js'\n\nexport class FlagsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n status?: string\n type?: string\n affiliateId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Flag>> {\n return this.http.request({ method: 'GET', path: '/flags', query: params })\n }\n\n async stats(): Promise<FlagStats> {\n const envelope = await this.http.request<{ data: FlagStats; meta: unknown }>({\n method: 'GET',\n path: '/flags/stats',\n })\n return envelope.data\n }\n\n async resolve(id: string, data: ResolveFlagParams, options?: MutationOptions): Promise<Flag> {\n const envelope = await this.http.request<{ data: Flag; meta: unknown }>({\n method: 'POST',\n path: `/flags/${id}/resolve`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Merchant,\n NotificationPreferences,\n PayoutInfo,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n} from '../types/index.js'\n\nexport class MerchantResource {\n constructor(private readonly http: HttpClient) {}\n\n async get(): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'GET',\n path: '/merchant',\n })\n return envelope.data\n }\n\n async update(data: UpdateMerchantParams): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'PATCH',\n path: '/merchant',\n body: data,\n })\n return envelope.data\n }\n\n async getPayoutInfo(): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'GET',\n path: '/me/payout-info',\n })\n return envelope.data\n }\n\n async updatePayoutInfo(data: UpdatePayoutInfoParams): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'PATCH',\n path: '/me/payout-info',\n body: data,\n })\n return envelope.data\n }\n\n async getNotifications(): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'GET',\n path: '/merchant/notifications',\n })\n return envelope.data\n }\n\n async updateNotifications(data: UpdateNotificationPreferencesParams): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'PUT',\n path: '/merchant/notifications',\n body: data,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { CreatePayoutParams, MutationOptions, PaginatedResponse, PendingAffiliate, Payout, PayoutStats, PayoutStatus } from '../types/index.js'\n\nexport class PayoutsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: PayoutStatus\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Payout>> {\n return this.http.request({ method: 'GET', path: '/payouts', query: params })\n }\n\n listPending(params?: {\n programId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<PendingAffiliate>> {\n return this.http.request({ method: 'GET', path: '/payouts/pending', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<PayoutStats> {\n const envelope = await this.http.request<{ data: PayoutStats; meta: unknown }>({\n method: 'GET',\n path: '/payouts/stats',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreatePayoutParams, options?: MutationOptions): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'POST',\n path: '/payouts',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Affiliate,\n Coupon,\n ConnectProgramStripeParams,\n ConnectProgramStripeResponse,\n CreateCouponParams,\n CreateInviteParams,\n CreateProgramParams,\n DisconnectProgramStripeResponse,\n Invite,\n MutationOptions,\n PaginatedResponse,\n Program,\n ProgramDetail,\n ProgramDomainVerificationInitResponse,\n ProgramDomainVerificationStatusResponse,\n ProgramStats,\n SuccessResponse,\n ProgramStatus,\n UpdateProgramMarketplaceParams,\n UpdateProgramParams,\n} from '../types/index.js'\n\nexport class ProgramsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n status?: ProgramStatus\n }): Promise<PaginatedResponse<Program>> {\n return this.http.request({ method: 'GET', path: '/programs', query: params })\n }\n\n async *listAll(params?: {\n pageSize?: number\n }): AsyncGenerator<Program> {\n let page = 1\n const pageSize = params?.pageSize ?? 100\n\n while (true) {\n const response = await this.list({ page, limit: pageSize })\n yield* response.data\n\n if (!response.meta.hasMore) {\n break\n }\n\n page += 1\n }\n }\n\n async get(id: string): Promise<ProgramDetail> {\n const envelope = await this.http.request<{ data: ProgramDetail; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async create(data: CreateProgramParams, options?: MutationOptions): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'POST',\n path: '/programs',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateProgramParams): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async stats(id: string, params?: { period?: string }): Promise<ProgramStats> {\n const envelope = await this.http.request<{ data: ProgramStats; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/stats`,\n query: params,\n })\n return envelope.data\n }\n\n listAffiliates(\n id: string,\n params?: { includeBlocked?: boolean; cursor?: string; limit?: number; page?: number; pageSize?: number; offset?: number }\n ): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({\n method: 'GET',\n path: `/programs/${id}/affiliates`,\n query: params,\n })\n }\n\n async listCoupons(id: string): Promise<Coupon[]> {\n const envelope = await this.http.request<{ data: Coupon[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/coupons`,\n })\n return envelope.data\n }\n\n async createCoupon(id: string, data: CreateCouponParams, options?: MutationOptions): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/coupons`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async createInvite(\n id: string,\n data: CreateInviteParams,\n options?: MutationOptions\n ): Promise<Invite> {\n const envelope = await this.http.request<{ data: Invite; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/invites`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async listInvites(id: string): Promise<Invite[]> {\n const envelope = await this.http.request<{ data: Invite[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/invites`,\n })\n return envelope.data\n }\n\n async deleteCoupon(couponId: string): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'DELETE',\n path: `/coupons/${couponId}`,\n })\n return envelope.data\n }\n\n async updateMarketplace(id: string, data: UpdateProgramMarketplaceParams): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}/marketplace`,\n body: data,\n })\n return envelope.data\n }\n\n async connectStripe(id: string, data?: ConnectProgramStripeParams): Promise<ConnectProgramStripeResponse> {\n const envelope = await this.http.request<{ data: ConnectProgramStripeResponse; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/connect-stripe`,\n body: data,\n })\n return envelope.data\n }\n\n async disconnectStripe(id: string): Promise<DisconnectProgramStripeResponse> {\n const envelope = await this.http.request<{ data: DisconnectProgramStripeResponse; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}/connect-stripe`,\n })\n return envelope.data\n }\n\n async verifyDomain(id: string, data: { domain: string }): Promise<ProgramDomainVerificationInitResponse> {\n const envelope = await this.http.request<{ data: ProgramDomainVerificationInitResponse; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/verify-domain`,\n body: data,\n })\n return envelope.data\n }\n\n async removeDomainVerification(id: string): Promise<SuccessResponse> {\n const envelope = await this.http.request<{ data: SuccessResponse; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}/verify-domain`,\n })\n return envelope.data\n }\n\n async getDomainStatus(id: string): Promise<ProgramDomainVerificationStatusResponse> {\n const envelope = await this.http.request<{ data: ProgramDomainVerificationStatusResponse; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/verify-domain/status`,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n CreateWebhookEndpointParams,\n SuccessResponse,\n UpdateWebhookEndpointParams,\n WebhookEndpoint,\n WebhookSecretResponse,\n} from '../types/index.js'\n\nexport class WebhooksResource {\n constructor(private readonly http: HttpClient) {}\n\n async list(params?: { programId?: string }): Promise<WebhookEndpoint[]> {\n const envelope = await this.http.request<{ data: WebhookEndpoint[]; meta: unknown }>({\n method: 'GET',\n path: '/webhooks',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreateWebhookEndpointParams): Promise<WebhookSecretResponse> {\n const envelope = await this.http.request<{ data: WebhookSecretResponse; meta: unknown }>({\n method: 'POST',\n path: '/webhooks',\n body: data,\n })\n return envelope.data\n }\n\n async get(id: string): Promise<WebhookEndpoint> {\n const envelope = await this.http.request<{ data: WebhookEndpoint; meta: unknown }>({\n method: 'GET',\n path: `/webhooks/${id}`,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateWebhookEndpointParams): Promise<WebhookEndpoint> {\n const envelope = await this.http.request<{ data: WebhookEndpoint; meta: unknown }>({\n method: 'PATCH',\n path: `/webhooks/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<SuccessResponse> {\n const envelope = await this.http.request<{ data: SuccessResponse; meta: unknown }>({\n method: 'DELETE',\n path: `/webhooks/${id}`,\n })\n return envelope.data\n }\n\n async rotateSecret(id: string): Promise<WebhookSecretResponse> {\n const envelope = await this.http.request<{ data: WebhookSecretResponse; meta: unknown }>({\n method: 'POST',\n path: `/webhooks/${id}/rotate-secret`,\n })\n return envelope.data\n }\n}\n","import { HttpClient } from './http.js'\nimport type { AgentRefConfig } from './types/index.js'\nimport { AffiliatesResource } from './resources/affiliates.js'\nimport { BillingResource } from './resources/billing.js'\nimport { ConversionsResource } from './resources/conversions.js'\nimport { FlagsResource } from './resources/flags.js'\nimport { MerchantResource } from './resources/merchant.js'\nimport { PayoutsResource } from './resources/payouts.js'\nimport { ProgramsResource } from './resources/programs.js'\nimport { WebhooksResource } from './resources/webhooks.js'\n\nexport class AgentRef {\n readonly programs: ProgramsResource\n readonly affiliates: AffiliatesResource\n readonly conversions: ConversionsResource\n readonly payouts: PayoutsResource\n readonly flags: FlagsResource\n readonly billing: BillingResource\n readonly merchant: MerchantResource\n readonly webhooks: WebhooksResource\n\n constructor(config?: AgentRefConfig) {\n const http = new HttpClient(config)\n\n this.programs = new ProgramsResource(http)\n this.affiliates = new AffiliatesResource(http)\n this.conversions = new ConversionsResource(http)\n this.payouts = new PayoutsResource(http)\n this.flags = new FlagsResource(http)\n this.billing = new BillingResource(http)\n this.merchant = new MerchantResource(http)\n this.webhooks = new WebhooksResource(http)\n }\n}\n"],"mappings":"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","names":[]}
package/dist/index.d.mts CHANGED
@@ -20,17 +20,14 @@ interface AgentRefConfig {
20
20
  interface MutationOptions {
21
21
  idempotencyKey?: string;
22
22
  }
23
+ type BillingRequirementStatus = 'not_required' | 'required' | 'grace_period' | 'restricted' | 'active';
23
24
  interface Merchant {
24
25
  id: string;
25
26
  userId: string;
26
27
  companyName: string;
27
- website: string | null;
28
28
  logoUrl: string | null;
29
- stripeAccountId: string | null;
30
- stripeConnectedAt: string | null;
31
29
  billingTier: string;
32
- stripeCustomerId: string | null;
33
- stripeSubscriptionId: string | null;
30
+ billingRequirementStatus: BillingRequirementStatus;
34
31
  paymentStatus: string;
35
32
  lastPaymentFailedAt: string | null;
36
33
  defaultCookieDuration: number;
@@ -39,11 +36,7 @@ interface Merchant {
39
36
  trackingRequiresConsent: boolean;
40
37
  trackingParamAliases: string[];
41
38
  trackingLegacyMetadataFallbackEnabled: boolean;
42
- state: 'onboarding' | 'active' | 'verified';
43
- verifiedDomain: string | null;
44
- domainVerificationToken: string | null;
45
- domainVerifiedAt: string | null;
46
- notificationPreferences: UpdateNotificationPreferencesParams | null;
39
+ notificationPreferences: NotificationPreferences | null;
47
40
  onboardingCompleted: boolean;
48
41
  onboardingStep: number;
49
42
  createdAt: string;
@@ -51,7 +44,6 @@ interface Merchant {
51
44
  }
52
45
  interface UpdateMerchantParams {
53
46
  companyName?: string;
54
- website?: string;
55
47
  logoUrl?: string;
56
48
  timezone?: string;
57
49
  defaultCookieDuration?: number;
@@ -60,29 +52,22 @@ interface UpdateMerchantParams {
60
52
  trackingParamAliases?: string[];
61
53
  trackingLegacyMetadataFallbackEnabled?: boolean;
62
54
  }
63
- interface MerchantDomainStatus {
64
- status: 'none' | 'pending' | 'verified';
65
- domain: string | null;
66
- txtRecord: string | null;
67
- verifiedAt: string | null;
68
- trackingMode: 'basic' | 'advanced';
69
- advancedTrackingEnabled: boolean;
70
- }
71
- interface StripeConnectSession {
72
- url: string;
73
- }
74
55
  type CommissionType = 'one_time' | 'recurring' | 'recurring_limited';
75
56
  type ProgramStatus = 'active' | 'paused' | 'archived';
76
57
  type ProgramMarketplaceStatus = 'private' | 'pending' | 'public';
77
58
  type ProgramMarketplaceVisibility = 'private' | 'public';
59
+ type ProgramReadiness = 'setup' | 'partial' | 'ready';
60
+ type StripeConnectMethod = 'oauth_url' | 'restricted_key' | 'fallback_url';
78
61
  interface Program {
79
62
  id: string;
80
63
  merchantId: string;
81
64
  name: string;
82
65
  description: string | null;
83
66
  slug: string;
67
+ website: string | null;
84
68
  landingPageUrl: string | null;
85
69
  portalSlug: string | null;
70
+ status: ProgramStatus;
86
71
  marketplaceStatus: ProgramMarketplaceStatus;
87
72
  marketplaceCategory: string | null;
88
73
  marketplaceDescription: string | null;
@@ -92,14 +77,24 @@ interface Program {
92
77
  commissionLimitMonths: number | null;
93
78
  commissionHoldDays: number;
94
79
  cookieDuration: number;
80
+ trackingRequiresConsent: boolean | null;
81
+ trackingParamAliases: string[] | null;
82
+ trackingLegacyMetadataFallbackEnabled: boolean | null;
95
83
  payoutThreshold: number;
96
84
  currency: string;
97
85
  autoApproveAffiliates: boolean;
98
86
  termsUrl: string | null;
99
- status: ProgramStatus;
87
+ stripeAccountId: string | null;
88
+ stripeConnectedAt: string | null;
89
+ verifiedDomain: string | null;
90
+ domainVerificationToken: string | null;
91
+ domainVerifiedAt: string | null;
100
92
  createdAt: string;
101
93
  updatedAt: string;
102
94
  }
95
+ interface ProgramDetail extends Program {
96
+ readiness: ProgramReadiness;
97
+ }
103
98
  interface UpdateProgramMarketplaceParams {
104
99
  status?: ProgramMarketplaceVisibility;
105
100
  category?: string;
@@ -133,6 +128,42 @@ interface UpdateProgramParams {
133
128
  currency?: string;
134
129
  commissionLimitMonths?: number | null;
135
130
  }
131
+ interface ConnectProgramStripeParams {
132
+ method?: StripeConnectMethod;
133
+ stripeAccountId?: string;
134
+ }
135
+ interface ConnectProgramStripeResponse {
136
+ connected: boolean;
137
+ method: StripeConnectMethod;
138
+ programId: string;
139
+ programReadiness?: ProgramReadiness;
140
+ stripeAccountId?: string;
141
+ authUrl?: string;
142
+ message: string;
143
+ }
144
+ interface DisconnectProgramStripeResponse {
145
+ success: boolean;
146
+ programId: string;
147
+ }
148
+ interface ProgramDomainVerificationInitResponse {
149
+ programId: string;
150
+ domain: string;
151
+ token: string;
152
+ txtRecord: string;
153
+ txtRecordName: string;
154
+ message: string;
155
+ }
156
+ interface ProgramDomainVerificationStatusResponse {
157
+ verified: boolean;
158
+ domain: string | null;
159
+ verifiedAt: string | null;
160
+ programId: string;
161
+ programReadiness: ProgramReadiness;
162
+ message: string;
163
+ }
164
+ interface SuccessResponse {
165
+ success: boolean;
166
+ }
136
167
  interface CreateCouponParams {
137
168
  affiliateId: string;
138
169
  code: string;
@@ -331,6 +362,39 @@ interface UpdateNotificationPreferencesParams {
331
362
  payoutProcessed?: boolean;
332
363
  weeklyDigest?: boolean;
333
364
  }
365
+ type WebhookEventType = 'program.created' | 'program.updated' | 'affiliate.joined' | 'affiliate.approved' | 'affiliate.blocked' | 'affiliate.unblocked' | 'conversion.created' | 'conversion.refunded' | 'payout.created' | 'payout.processing' | 'payout.completed' | 'payout.failed' | 'flag.resolved';
366
+ type WebhookEndpointStatus = 'active' | 'disabled';
367
+ interface WebhookEndpoint {
368
+ id: string;
369
+ name: string;
370
+ url: string;
371
+ status: WebhookEndpointStatus;
372
+ programId: string | null;
373
+ schemaVersion: 2;
374
+ subscribedEvents: WebhookEventType[];
375
+ secretLastFour: string | null;
376
+ createdAt: string;
377
+ updatedAt: string;
378
+ disabledAt: string | null;
379
+ }
380
+ interface CreateWebhookEndpointParams {
381
+ name: string;
382
+ url: string;
383
+ programId?: string;
384
+ schemaVersion?: 2;
385
+ subscribedEvents: WebhookEventType[];
386
+ }
387
+ interface UpdateWebhookEndpointParams {
388
+ name?: string;
389
+ url?: string;
390
+ programId?: string | null;
391
+ schemaVersion?: 2;
392
+ subscribedEvents?: WebhookEventType[];
393
+ }
394
+ interface WebhookSecretResponse {
395
+ endpoint: WebhookEndpoint;
396
+ signingSecret: string;
397
+ }
334
398
 
335
399
  type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
336
400
  interface RequestOptions {
@@ -440,8 +504,6 @@ declare class MerchantResource {
440
504
  constructor(http: HttpClient);
441
505
  get(): Promise<Merchant>;
442
506
  update(data: UpdateMerchantParams): Promise<Merchant>;
443
- connectStripe(): Promise<StripeConnectSession>;
444
- domainStatus(): Promise<MerchantDomainStatus>;
445
507
  getPayoutInfo(): Promise<PayoutInfo>;
446
508
  updatePayoutInfo(data: UpdatePayoutInfoParams): Promise<PayoutInfo>;
447
509
  getNotifications(): Promise<NotificationPreferences>;
@@ -494,7 +556,7 @@ declare class ProgramsResource {
494
556
  listAll(params?: {
495
557
  pageSize?: number;
496
558
  }): AsyncGenerator<Program>;
497
- get(id: string): Promise<Program>;
559
+ get(id: string): Promise<ProgramDetail>;
498
560
  create(data: CreateProgramParams, options?: MutationOptions): Promise<Program>;
499
561
  update(id: string, data: UpdateProgramParams): Promise<Program>;
500
562
  delete(id: string): Promise<Program>;
@@ -515,6 +577,26 @@ declare class ProgramsResource {
515
577
  listInvites(id: string): Promise<Invite[]>;
516
578
  deleteCoupon(couponId: string): Promise<Coupon>;
517
579
  updateMarketplace(id: string, data: UpdateProgramMarketplaceParams): Promise<Record<string, unknown>>;
580
+ connectStripe(id: string, data?: ConnectProgramStripeParams): Promise<ConnectProgramStripeResponse>;
581
+ disconnectStripe(id: string): Promise<DisconnectProgramStripeResponse>;
582
+ verifyDomain(id: string, data: {
583
+ domain: string;
584
+ }): Promise<ProgramDomainVerificationInitResponse>;
585
+ removeDomainVerification(id: string): Promise<SuccessResponse>;
586
+ getDomainStatus(id: string): Promise<ProgramDomainVerificationStatusResponse>;
587
+ }
588
+
589
+ declare class WebhooksResource {
590
+ private readonly http;
591
+ constructor(http: HttpClient);
592
+ list(params?: {
593
+ programId?: string;
594
+ }): Promise<WebhookEndpoint[]>;
595
+ create(data: CreateWebhookEndpointParams): Promise<WebhookSecretResponse>;
596
+ get(id: string): Promise<WebhookEndpoint>;
597
+ update(id: string, data: UpdateWebhookEndpointParams): Promise<WebhookEndpoint>;
598
+ delete(id: string): Promise<SuccessResponse>;
599
+ rotateSecret(id: string): Promise<WebhookSecretResponse>;
518
600
  }
519
601
 
520
602
  declare class AgentRef {
@@ -525,6 +607,7 @@ declare class AgentRef {
525
607
  readonly flags: FlagsResource;
526
608
  readonly billing: BillingResource;
527
609
  readonly merchant: MerchantResource;
610
+ readonly webhooks: WebhooksResource;
528
611
  constructor(config?: AgentRefConfig);
529
612
  }
530
613
 
@@ -558,4 +641,4 @@ declare class ServerError extends AgentRefError {
558
641
  constructor(message: string, code: string, status: number, requestId: string);
559
642
  }
560
643
 
561
- export { type Affiliate, type AffiliateSortBy, type AffiliateStatus, AgentRef, type AgentRefConfig, AgentRefError, AuthError, type BillingStatus, type BillingTier, type BillingTierId, type CommissionType, ConflictError, type Conversion, type ConversionStats, type ConversionStatus, type Coupon, type CreateCouponParams, type CreateInviteParams, type CreatePayoutParams, type CreateProgramParams, type Flag, type FlagStats, type FlagStatus, type FlagType, ForbiddenError, type Invite, type Merchant, type MerchantDomainStatus, type MutationOptions, NotFoundError, type NotificationPreferences, type PaginatedResponse, type PaginationMeta, type Payout, type PayoutInfo, type PayoutStats, type PayoutStatus, type PendingAffiliate, type Program, type ProgramMarketplaceStatus, type ProgramMarketplaceVisibility, type ProgramStats, type ProgramStatus, RateLimitError, type ResolveFlagParams, ServerError, type SortOrder, type StripeConnectSession, type UpdateMerchantParams, type UpdateNotificationPreferencesParams, type UpdatePayoutInfoParams, type UpdateProgramMarketplaceParams, type UpdateProgramParams, ValidationError };
644
+ export { type Affiliate, type AffiliateSortBy, type AffiliateStatus, AgentRef, type AgentRefConfig, AgentRefError, AuthError, type BillingRequirementStatus, type BillingStatus, type BillingTier, type BillingTierId, type CommissionType, ConflictError, type ConnectProgramStripeParams, type ConnectProgramStripeResponse, type Conversion, type ConversionStats, type ConversionStatus, type Coupon, type CreateCouponParams, type CreateInviteParams, type CreatePayoutParams, type CreateProgramParams, type CreateWebhookEndpointParams, type DisconnectProgramStripeResponse, type Flag, type FlagStats, type FlagStatus, type FlagType, ForbiddenError, type Invite, type Merchant, type MutationOptions, NotFoundError, type NotificationPreferences, type PaginatedResponse, type PaginationMeta, type Payout, type PayoutInfo, type PayoutStats, type PayoutStatus, type PendingAffiliate, type Program, type ProgramDetail, type ProgramDomainVerificationInitResponse, type ProgramDomainVerificationStatusResponse, type ProgramMarketplaceStatus, type ProgramMarketplaceVisibility, type ProgramReadiness, type ProgramStats, type ProgramStatus, RateLimitError, type ResolveFlagParams, ServerError, type SortOrder, type StripeConnectMethod, type SuccessResponse, type UpdateMerchantParams, type UpdateNotificationPreferencesParams, type UpdatePayoutInfoParams, type UpdateProgramMarketplaceParams, type UpdateProgramParams, type UpdateWebhookEndpointParams, ValidationError, type WebhookEndpoint, type WebhookEndpointStatus, type WebhookEventType, type WebhookSecretResponse };
package/dist/index.d.ts CHANGED
@@ -20,17 +20,14 @@ interface AgentRefConfig {
20
20
  interface MutationOptions {
21
21
  idempotencyKey?: string;
22
22
  }
23
+ type BillingRequirementStatus = 'not_required' | 'required' | 'grace_period' | 'restricted' | 'active';
23
24
  interface Merchant {
24
25
  id: string;
25
26
  userId: string;
26
27
  companyName: string;
27
- website: string | null;
28
28
  logoUrl: string | null;
29
- stripeAccountId: string | null;
30
- stripeConnectedAt: string | null;
31
29
  billingTier: string;
32
- stripeCustomerId: string | null;
33
- stripeSubscriptionId: string | null;
30
+ billingRequirementStatus: BillingRequirementStatus;
34
31
  paymentStatus: string;
35
32
  lastPaymentFailedAt: string | null;
36
33
  defaultCookieDuration: number;
@@ -39,11 +36,7 @@ interface Merchant {
39
36
  trackingRequiresConsent: boolean;
40
37
  trackingParamAliases: string[];
41
38
  trackingLegacyMetadataFallbackEnabled: boolean;
42
- state: 'onboarding' | 'active' | 'verified';
43
- verifiedDomain: string | null;
44
- domainVerificationToken: string | null;
45
- domainVerifiedAt: string | null;
46
- notificationPreferences: UpdateNotificationPreferencesParams | null;
39
+ notificationPreferences: NotificationPreferences | null;
47
40
  onboardingCompleted: boolean;
48
41
  onboardingStep: number;
49
42
  createdAt: string;
@@ -51,7 +44,6 @@ interface Merchant {
51
44
  }
52
45
  interface UpdateMerchantParams {
53
46
  companyName?: string;
54
- website?: string;
55
47
  logoUrl?: string;
56
48
  timezone?: string;
57
49
  defaultCookieDuration?: number;
@@ -60,29 +52,22 @@ interface UpdateMerchantParams {
60
52
  trackingParamAliases?: string[];
61
53
  trackingLegacyMetadataFallbackEnabled?: boolean;
62
54
  }
63
- interface MerchantDomainStatus {
64
- status: 'none' | 'pending' | 'verified';
65
- domain: string | null;
66
- txtRecord: string | null;
67
- verifiedAt: string | null;
68
- trackingMode: 'basic' | 'advanced';
69
- advancedTrackingEnabled: boolean;
70
- }
71
- interface StripeConnectSession {
72
- url: string;
73
- }
74
55
  type CommissionType = 'one_time' | 'recurring' | 'recurring_limited';
75
56
  type ProgramStatus = 'active' | 'paused' | 'archived';
76
57
  type ProgramMarketplaceStatus = 'private' | 'pending' | 'public';
77
58
  type ProgramMarketplaceVisibility = 'private' | 'public';
59
+ type ProgramReadiness = 'setup' | 'partial' | 'ready';
60
+ type StripeConnectMethod = 'oauth_url' | 'restricted_key' | 'fallback_url';
78
61
  interface Program {
79
62
  id: string;
80
63
  merchantId: string;
81
64
  name: string;
82
65
  description: string | null;
83
66
  slug: string;
67
+ website: string | null;
84
68
  landingPageUrl: string | null;
85
69
  portalSlug: string | null;
70
+ status: ProgramStatus;
86
71
  marketplaceStatus: ProgramMarketplaceStatus;
87
72
  marketplaceCategory: string | null;
88
73
  marketplaceDescription: string | null;
@@ -92,14 +77,24 @@ interface Program {
92
77
  commissionLimitMonths: number | null;
93
78
  commissionHoldDays: number;
94
79
  cookieDuration: number;
80
+ trackingRequiresConsent: boolean | null;
81
+ trackingParamAliases: string[] | null;
82
+ trackingLegacyMetadataFallbackEnabled: boolean | null;
95
83
  payoutThreshold: number;
96
84
  currency: string;
97
85
  autoApproveAffiliates: boolean;
98
86
  termsUrl: string | null;
99
- status: ProgramStatus;
87
+ stripeAccountId: string | null;
88
+ stripeConnectedAt: string | null;
89
+ verifiedDomain: string | null;
90
+ domainVerificationToken: string | null;
91
+ domainVerifiedAt: string | null;
100
92
  createdAt: string;
101
93
  updatedAt: string;
102
94
  }
95
+ interface ProgramDetail extends Program {
96
+ readiness: ProgramReadiness;
97
+ }
103
98
  interface UpdateProgramMarketplaceParams {
104
99
  status?: ProgramMarketplaceVisibility;
105
100
  category?: string;
@@ -133,6 +128,42 @@ interface UpdateProgramParams {
133
128
  currency?: string;
134
129
  commissionLimitMonths?: number | null;
135
130
  }
131
+ interface ConnectProgramStripeParams {
132
+ method?: StripeConnectMethod;
133
+ stripeAccountId?: string;
134
+ }
135
+ interface ConnectProgramStripeResponse {
136
+ connected: boolean;
137
+ method: StripeConnectMethod;
138
+ programId: string;
139
+ programReadiness?: ProgramReadiness;
140
+ stripeAccountId?: string;
141
+ authUrl?: string;
142
+ message: string;
143
+ }
144
+ interface DisconnectProgramStripeResponse {
145
+ success: boolean;
146
+ programId: string;
147
+ }
148
+ interface ProgramDomainVerificationInitResponse {
149
+ programId: string;
150
+ domain: string;
151
+ token: string;
152
+ txtRecord: string;
153
+ txtRecordName: string;
154
+ message: string;
155
+ }
156
+ interface ProgramDomainVerificationStatusResponse {
157
+ verified: boolean;
158
+ domain: string | null;
159
+ verifiedAt: string | null;
160
+ programId: string;
161
+ programReadiness: ProgramReadiness;
162
+ message: string;
163
+ }
164
+ interface SuccessResponse {
165
+ success: boolean;
166
+ }
136
167
  interface CreateCouponParams {
137
168
  affiliateId: string;
138
169
  code: string;
@@ -331,6 +362,39 @@ interface UpdateNotificationPreferencesParams {
331
362
  payoutProcessed?: boolean;
332
363
  weeklyDigest?: boolean;
333
364
  }
365
+ type WebhookEventType = 'program.created' | 'program.updated' | 'affiliate.joined' | 'affiliate.approved' | 'affiliate.blocked' | 'affiliate.unblocked' | 'conversion.created' | 'conversion.refunded' | 'payout.created' | 'payout.processing' | 'payout.completed' | 'payout.failed' | 'flag.resolved';
366
+ type WebhookEndpointStatus = 'active' | 'disabled';
367
+ interface WebhookEndpoint {
368
+ id: string;
369
+ name: string;
370
+ url: string;
371
+ status: WebhookEndpointStatus;
372
+ programId: string | null;
373
+ schemaVersion: 2;
374
+ subscribedEvents: WebhookEventType[];
375
+ secretLastFour: string | null;
376
+ createdAt: string;
377
+ updatedAt: string;
378
+ disabledAt: string | null;
379
+ }
380
+ interface CreateWebhookEndpointParams {
381
+ name: string;
382
+ url: string;
383
+ programId?: string;
384
+ schemaVersion?: 2;
385
+ subscribedEvents: WebhookEventType[];
386
+ }
387
+ interface UpdateWebhookEndpointParams {
388
+ name?: string;
389
+ url?: string;
390
+ programId?: string | null;
391
+ schemaVersion?: 2;
392
+ subscribedEvents?: WebhookEventType[];
393
+ }
394
+ interface WebhookSecretResponse {
395
+ endpoint: WebhookEndpoint;
396
+ signingSecret: string;
397
+ }
334
398
 
335
399
  type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
336
400
  interface RequestOptions {
@@ -440,8 +504,6 @@ declare class MerchantResource {
440
504
  constructor(http: HttpClient);
441
505
  get(): Promise<Merchant>;
442
506
  update(data: UpdateMerchantParams): Promise<Merchant>;
443
- connectStripe(): Promise<StripeConnectSession>;
444
- domainStatus(): Promise<MerchantDomainStatus>;
445
507
  getPayoutInfo(): Promise<PayoutInfo>;
446
508
  updatePayoutInfo(data: UpdatePayoutInfoParams): Promise<PayoutInfo>;
447
509
  getNotifications(): Promise<NotificationPreferences>;
@@ -494,7 +556,7 @@ declare class ProgramsResource {
494
556
  listAll(params?: {
495
557
  pageSize?: number;
496
558
  }): AsyncGenerator<Program>;
497
- get(id: string): Promise<Program>;
559
+ get(id: string): Promise<ProgramDetail>;
498
560
  create(data: CreateProgramParams, options?: MutationOptions): Promise<Program>;
499
561
  update(id: string, data: UpdateProgramParams): Promise<Program>;
500
562
  delete(id: string): Promise<Program>;
@@ -515,6 +577,26 @@ declare class ProgramsResource {
515
577
  listInvites(id: string): Promise<Invite[]>;
516
578
  deleteCoupon(couponId: string): Promise<Coupon>;
517
579
  updateMarketplace(id: string, data: UpdateProgramMarketplaceParams): Promise<Record<string, unknown>>;
580
+ connectStripe(id: string, data?: ConnectProgramStripeParams): Promise<ConnectProgramStripeResponse>;
581
+ disconnectStripe(id: string): Promise<DisconnectProgramStripeResponse>;
582
+ verifyDomain(id: string, data: {
583
+ domain: string;
584
+ }): Promise<ProgramDomainVerificationInitResponse>;
585
+ removeDomainVerification(id: string): Promise<SuccessResponse>;
586
+ getDomainStatus(id: string): Promise<ProgramDomainVerificationStatusResponse>;
587
+ }
588
+
589
+ declare class WebhooksResource {
590
+ private readonly http;
591
+ constructor(http: HttpClient);
592
+ list(params?: {
593
+ programId?: string;
594
+ }): Promise<WebhookEndpoint[]>;
595
+ create(data: CreateWebhookEndpointParams): Promise<WebhookSecretResponse>;
596
+ get(id: string): Promise<WebhookEndpoint>;
597
+ update(id: string, data: UpdateWebhookEndpointParams): Promise<WebhookEndpoint>;
598
+ delete(id: string): Promise<SuccessResponse>;
599
+ rotateSecret(id: string): Promise<WebhookSecretResponse>;
518
600
  }
519
601
 
520
602
  declare class AgentRef {
@@ -525,6 +607,7 @@ declare class AgentRef {
525
607
  readonly flags: FlagsResource;
526
608
  readonly billing: BillingResource;
527
609
  readonly merchant: MerchantResource;
610
+ readonly webhooks: WebhooksResource;
528
611
  constructor(config?: AgentRefConfig);
529
612
  }
530
613
 
@@ -558,4 +641,4 @@ declare class ServerError extends AgentRefError {
558
641
  constructor(message: string, code: string, status: number, requestId: string);
559
642
  }
560
643
 
561
- export { type Affiliate, type AffiliateSortBy, type AffiliateStatus, AgentRef, type AgentRefConfig, AgentRefError, AuthError, type BillingStatus, type BillingTier, type BillingTierId, type CommissionType, ConflictError, type Conversion, type ConversionStats, type ConversionStatus, type Coupon, type CreateCouponParams, type CreateInviteParams, type CreatePayoutParams, type CreateProgramParams, type Flag, type FlagStats, type FlagStatus, type FlagType, ForbiddenError, type Invite, type Merchant, type MerchantDomainStatus, type MutationOptions, NotFoundError, type NotificationPreferences, type PaginatedResponse, type PaginationMeta, type Payout, type PayoutInfo, type PayoutStats, type PayoutStatus, type PendingAffiliate, type Program, type ProgramMarketplaceStatus, type ProgramMarketplaceVisibility, type ProgramStats, type ProgramStatus, RateLimitError, type ResolveFlagParams, ServerError, type SortOrder, type StripeConnectSession, type UpdateMerchantParams, type UpdateNotificationPreferencesParams, type UpdatePayoutInfoParams, type UpdateProgramMarketplaceParams, type UpdateProgramParams, ValidationError };
644
+ export { type Affiliate, type AffiliateSortBy, type AffiliateStatus, AgentRef, type AgentRefConfig, AgentRefError, AuthError, type BillingRequirementStatus, type BillingStatus, type BillingTier, type BillingTierId, type CommissionType, ConflictError, type ConnectProgramStripeParams, type ConnectProgramStripeResponse, type Conversion, type ConversionStats, type ConversionStatus, type Coupon, type CreateCouponParams, type CreateInviteParams, type CreatePayoutParams, type CreateProgramParams, type CreateWebhookEndpointParams, type DisconnectProgramStripeResponse, type Flag, type FlagStats, type FlagStatus, type FlagType, ForbiddenError, type Invite, type Merchant, type MutationOptions, NotFoundError, type NotificationPreferences, type PaginatedResponse, type PaginationMeta, type Payout, type PayoutInfo, type PayoutStats, type PayoutStatus, type PendingAffiliate, type Program, type ProgramDetail, type ProgramDomainVerificationInitResponse, type ProgramDomainVerificationStatusResponse, type ProgramMarketplaceStatus, type ProgramMarketplaceVisibility, type ProgramReadiness, type ProgramStats, type ProgramStatus, RateLimitError, type ResolveFlagParams, ServerError, type SortOrder, type StripeConnectMethod, type SuccessResponse, type UpdateMerchantParams, type UpdateNotificationPreferencesParams, type UpdatePayoutInfoParams, type UpdateProgramMarketplaceParams, type UpdateProgramParams, type UpdateWebhookEndpointParams, ValidationError, type WebhookEndpoint, type WebhookEndpointStatus, type WebhookEventType, type WebhookSecretResponse };
package/dist/index.mjs CHANGED
@@ -59,7 +59,7 @@ var SAFE_METHODS = /* @__PURE__ */ new Set(["GET", "HEAD"]);
59
59
  var DEFAULT_BASE_URL = "https://www.agentref.dev/api/v1";
60
60
  var DEFAULT_TIMEOUT = 3e4;
61
61
  var DEFAULT_MAX_RETRIES = 2;
62
- var VERSION = true ? "5.0.0" : "0.0.0";
62
+ var VERSION = true ? "5.0.1" : "0.0.0";
63
63
  function hasUsableIdempotencyKey(idempotencyKey) {
64
64
  return typeof idempotencyKey === "string" && idempotencyKey.trim().length > 0;
65
65
  }
@@ -326,20 +326,6 @@ var MerchantResource = class {
326
326
  });
327
327
  return envelope.data;
328
328
  }
329
- async connectStripe() {
330
- const envelope = await this.http.request({
331
- method: "POST",
332
- path: "/merchant/connect-stripe"
333
- });
334
- return envelope.data;
335
- }
336
- async domainStatus() {
337
- const envelope = await this.http.request({
338
- method: "GET",
339
- path: "/merchant/domain-status"
340
- });
341
- return envelope.data;
342
- }
343
329
  async getPayoutInfo() {
344
330
  const envelope = await this.http.request({
345
331
  method: "GET",
@@ -515,6 +501,95 @@ var ProgramsResource = class {
515
501
  });
516
502
  return envelope.data;
517
503
  }
504
+ async connectStripe(id, data) {
505
+ const envelope = await this.http.request({
506
+ method: "POST",
507
+ path: `/programs/${id}/connect-stripe`,
508
+ body: data
509
+ });
510
+ return envelope.data;
511
+ }
512
+ async disconnectStripe(id) {
513
+ const envelope = await this.http.request({
514
+ method: "DELETE",
515
+ path: `/programs/${id}/connect-stripe`
516
+ });
517
+ return envelope.data;
518
+ }
519
+ async verifyDomain(id, data) {
520
+ const envelope = await this.http.request({
521
+ method: "POST",
522
+ path: `/programs/${id}/verify-domain`,
523
+ body: data
524
+ });
525
+ return envelope.data;
526
+ }
527
+ async removeDomainVerification(id) {
528
+ const envelope = await this.http.request({
529
+ method: "DELETE",
530
+ path: `/programs/${id}/verify-domain`
531
+ });
532
+ return envelope.data;
533
+ }
534
+ async getDomainStatus(id) {
535
+ const envelope = await this.http.request({
536
+ method: "GET",
537
+ path: `/programs/${id}/verify-domain/status`
538
+ });
539
+ return envelope.data;
540
+ }
541
+ };
542
+
543
+ // src/resources/webhooks.ts
544
+ var WebhooksResource = class {
545
+ constructor(http) {
546
+ this.http = http;
547
+ }
548
+ async list(params) {
549
+ const envelope = await this.http.request({
550
+ method: "GET",
551
+ path: "/webhooks",
552
+ query: params
553
+ });
554
+ return envelope.data;
555
+ }
556
+ async create(data) {
557
+ const envelope = await this.http.request({
558
+ method: "POST",
559
+ path: "/webhooks",
560
+ body: data
561
+ });
562
+ return envelope.data;
563
+ }
564
+ async get(id) {
565
+ const envelope = await this.http.request({
566
+ method: "GET",
567
+ path: `/webhooks/${id}`
568
+ });
569
+ return envelope.data;
570
+ }
571
+ async update(id, data) {
572
+ const envelope = await this.http.request({
573
+ method: "PATCH",
574
+ path: `/webhooks/${id}`,
575
+ body: data
576
+ });
577
+ return envelope.data;
578
+ }
579
+ async delete(id) {
580
+ const envelope = await this.http.request({
581
+ method: "DELETE",
582
+ path: `/webhooks/${id}`
583
+ });
584
+ return envelope.data;
585
+ }
586
+ async rotateSecret(id) {
587
+ const envelope = await this.http.request({
588
+ method: "POST",
589
+ path: `/webhooks/${id}/rotate-secret`
590
+ });
591
+ return envelope.data;
592
+ }
518
593
  };
519
594
 
520
595
  // src/client.ts
@@ -528,6 +603,7 @@ var AgentRef = class {
528
603
  this.flags = new FlagsResource(http);
529
604
  this.billing = new BillingResource(http);
530
605
  this.merchant = new MerchantResource(http);
606
+ this.webhooks = new WebhooksResource(http);
531
607
  }
532
608
  };
533
609
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/resources/affiliates.ts","../src/resources/billing.ts","../src/resources/conversions.ts","../src/resources/flags.ts","../src/resources/merchant.ts","../src/resources/payouts.ts","../src/resources/programs.ts","../src/client.ts"],"sourcesContent":["export class AgentRefError extends Error {\n readonly code: string\n readonly status: number\n readonly requestId: string\n\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message)\n this.name = 'AgentRefError'\n this.code = code\n this.status = status\n this.requestId = requestId\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class AuthError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 401, requestId)\n this.name = 'AuthError'\n }\n}\n\nexport class ForbiddenError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 403, requestId)\n this.name = 'ForbiddenError'\n }\n}\n\nexport class ValidationError extends AgentRefError {\n readonly details: unknown\n\n constructor(message: string, code: string, requestId: string, details?: unknown) {\n super(message, code, 400, requestId)\n this.name = 'ValidationError'\n this.details = details\n }\n}\n\nexport class NotFoundError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 404, requestId)\n this.name = 'NotFoundError'\n }\n}\n\nexport class ConflictError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 409, requestId)\n this.name = 'ConflictError'\n }\n}\n\nexport class RateLimitError extends AgentRefError {\n readonly retryAfter: number\n\n constructor(message: string, code: string, requestId: string, retryAfter: number) {\n super(message, code, 429, requestId)\n this.name = 'RateLimitError'\n this.retryAfter = retryAfter\n }\n}\n\nexport class ServerError extends AgentRefError {\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message, code, status, requestId)\n this.name = 'ServerError'\n }\n}\n","import {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nimport type { AgentRefConfig } from './types/index.js'\n\nexport type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nconst SAFE_METHODS: ReadonlySet<HttpMethod> = new Set(['GET', 'HEAD'])\n\nexport interface RequestOptions {\n method: HttpMethod\n path: string\n body?: unknown\n query?: Record<string, string | number | boolean | undefined>\n idempotencyKey?: string\n}\n\nconst DEFAULT_BASE_URL = 'https://www.agentref.dev/api/v1'\nconst DEFAULT_TIMEOUT = 30_000\nconst DEFAULT_MAX_RETRIES = 2\n\ndeclare const __SDK_VERSION__: string\nconst VERSION = typeof __SDK_VERSION__ === 'string' ? __SDK_VERSION__ : '0.0.0'\n\nfunction hasUsableIdempotencyKey(idempotencyKey: string | undefined): boolean {\n return typeof idempotencyKey === 'string' && idempotencyKey.trim().length > 0\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly maxRetries: number\n\n constructor(config: AgentRefConfig = {}) {\n if (typeof window !== 'undefined' && !config.dangerouslyAllowBrowser) {\n throw new Error(\n '[AgentRef] Refusing to initialize in browser context. API keys must not be exposed client-side. Use a server-side proxy to call the AgentRef API instead. To override: set dangerouslyAllowBrowser: true (understand the security implications first).'\n )\n }\n\n const apiKey = config.apiKey ?? process.env['AGENTREF_API_KEY']\n if (!apiKey) {\n throw new Error(\n '[AgentRef] API key is required. Pass it as apiKey or set the AGENTREF_API_KEY environment variable.'\n )\n }\n\n this.apiKey = apiKey\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '')\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query)\n const isSafe = SAFE_METHODS.has(options.method)\n const hasIdempotency = options.method === 'POST' && hasUsableIdempotencyKey(options.idempotencyKey)\n const canRetry = isSafe || hasIdempotency\n const maxAttempts = canRetry ? this.maxRetries + 1 : 1\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n let response: Response\n\n try {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': `agentref-node/${VERSION}`,\n }\n\n if (hasIdempotency) {\n headers['Idempotency-Key'] = options.idempotencyKey!.trim()\n }\n\n response = await fetch(url, {\n method: options.method,\n headers,\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\n signal: AbortSignal.timeout(this.timeout),\n })\n } catch (error) {\n if (canRetry && attempt < maxAttempts - 1) {\n await this.wait(this.backoff(attempt))\n continue\n }\n throw error\n }\n\n if (!response.ok) {\n const parsedError = await this.parseError(response)\n\n if (canRetry && this.isRetryable(response.status) && attempt < maxAttempts - 1) {\n const delay =\n response.status === 429\n ? this.retryAfterToMs(response.headers.get('Retry-After'))\n : this.backoff(attempt)\n await this.wait(delay)\n continue\n }\n\n throw parsedError\n }\n\n return response.json() as Promise<T>\n }\n\n throw new ServerError('Request failed after retries', 'REQUEST_RETRY_EXHAUSTED', 500, '')\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n const url = new URL(`${this.baseUrl}${normalizedPath}`)\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value))\n }\n }\n }\n\n return url.toString()\n }\n\n private async parseError(response: Response): Promise<AgentRefError> {\n const json = (await response.json().catch(() => ({}))) as {\n error?: { code?: string; message?: string; details?: unknown }\n meta?: { requestId?: string }\n }\n\n const code = json.error?.code ?? 'UNKNOWN_ERROR'\n const message = json.error?.message ?? response.statusText\n const requestId = json.meta?.requestId ?? ''\n const details = json.error?.details\n\n if (response.status === 400) return new ValidationError(message, code, requestId, details)\n if (response.status === 401) return new AuthError(message, code, requestId)\n if (response.status === 403) return new ForbiddenError(message, code, requestId)\n if (response.status === 404) return new NotFoundError(message, code, requestId)\n if (response.status === 409) return new ConflictError(message, code, requestId)\n if (response.status === 429) {\n return new RateLimitError(message, code, requestId, this.retryAfterToSeconds(response.headers.get('Retry-After')))\n }\n\n return new ServerError(message, code, response.status, requestId)\n }\n\n private isRetryable(status: number): boolean {\n return status === 429 || status >= 500\n }\n\n private retryAfterToSeconds(headerValue: string | null): number {\n if (!headerValue) return 60\n\n const numericSeconds = Number(headerValue)\n if (!Number.isNaN(numericSeconds) && numericSeconds >= 0) {\n return Math.ceil(numericSeconds)\n }\n\n const asDate = Date.parse(headerValue)\n if (!Number.isNaN(asDate)) {\n const deltaMs = asDate - Date.now()\n return Math.max(0, Math.ceil(deltaMs / 1000))\n }\n\n return 60\n }\n\n private retryAfterToMs(headerValue: string | null): number {\n return this.retryAfterToSeconds(headerValue) * 1000\n }\n\n private wait(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n }\n\n private backoff(attempt: number): number {\n return 500 * Math.pow(2, attempt)\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Affiliate, AffiliateSortBy, AffiliateStatus, MutationOptions, PaginatedResponse, SortOrder } from '../types/index.js'\n\nexport class AffiliatesResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n includeBlocked?: boolean\n search?: string\n sortBy?: AffiliateSortBy\n sortOrder?: SortOrder\n status?: AffiliateStatus\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({ method: 'GET', path: '/affiliates', query: params })\n }\n\n async get(id: string, options?: { include?: 'stats' }): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'GET',\n path: `/affiliates/${id}`,\n query: options?.include ? { include: options.include } : undefined,\n })\n return envelope.data\n }\n\n async approve(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/approve`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async block(id: string, data?: { reason?: string }, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/block`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async unblock(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/unblock`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { BillingStatus, BillingTier, MutationOptions } from '../types/index.js'\n\nexport class BillingResource {\n constructor(private readonly http: HttpClient) {}\n\n async current(): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'GET',\n path: '/billing',\n })\n return envelope.data\n }\n\n async tiers(): Promise<BillingTier[]> {\n const envelope = await this.http.request<{ data: BillingTier[]; meta: unknown }>({\n method: 'GET',\n path: '/billing/tiers',\n })\n return envelope.data\n }\n\n async subscribe(data: { tier: 'starter' | 'growth' | 'pro' | 'scale' }, options?: MutationOptions): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'POST',\n path: '/billing/subscribe',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Conversion, ConversionStats, PaginatedResponse } from '../types/index.js'\n\nexport class ConversionsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: string\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Conversion>> {\n return this.http.request({ method: 'GET', path: '/conversions', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<ConversionStats> {\n const envelope = await this.http.request<{ data: ConversionStats; meta: unknown }>({\n method: 'GET',\n path: '/conversions/stats',\n query: params,\n })\n return envelope.data\n }\n\n async recent(params?: { limit?: number }): Promise<Conversion[]> {\n const envelope = await this.http.request<{ data: Conversion[]; meta: unknown }>({\n method: 'GET',\n path: '/conversions/recent',\n query: params,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Flag, FlagStats, MutationOptions, PaginatedResponse, ResolveFlagParams } from '../types/index.js'\n\nexport class FlagsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n status?: string\n type?: string\n affiliateId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Flag>> {\n return this.http.request({ method: 'GET', path: '/flags', query: params })\n }\n\n async stats(): Promise<FlagStats> {\n const envelope = await this.http.request<{ data: FlagStats; meta: unknown }>({\n method: 'GET',\n path: '/flags/stats',\n })\n return envelope.data\n }\n\n async resolve(id: string, data: ResolveFlagParams, options?: MutationOptions): Promise<Flag> {\n const envelope = await this.http.request<{ data: Flag; meta: unknown }>({\n method: 'POST',\n path: `/flags/${id}/resolve`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Merchant,\n MerchantDomainStatus,\n NotificationPreferences,\n PayoutInfo,\n StripeConnectSession,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n} from '../types/index.js'\n\nexport class MerchantResource {\n constructor(private readonly http: HttpClient) {}\n\n async get(): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'GET',\n path: '/merchant',\n })\n return envelope.data\n }\n\n async update(data: UpdateMerchantParams): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'PATCH',\n path: '/merchant',\n body: data,\n })\n return envelope.data\n }\n\n async connectStripe(): Promise<StripeConnectSession> {\n const envelope = await this.http.request<{ data: StripeConnectSession; meta: unknown }>({\n method: 'POST',\n path: '/merchant/connect-stripe',\n })\n return envelope.data\n }\n\n async domainStatus(): Promise<MerchantDomainStatus> {\n const envelope = await this.http.request<{ data: MerchantDomainStatus; meta: unknown }>({\n method: 'GET',\n path: '/merchant/domain-status',\n })\n return envelope.data\n }\n\n async getPayoutInfo(): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'GET',\n path: '/me/payout-info',\n })\n return envelope.data\n }\n\n async updatePayoutInfo(data: UpdatePayoutInfoParams): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'PATCH',\n path: '/me/payout-info',\n body: data,\n })\n return envelope.data\n }\n\n async getNotifications(): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'GET',\n path: '/merchant/notifications',\n })\n return envelope.data\n }\n\n async updateNotifications(data: UpdateNotificationPreferencesParams): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'PUT',\n path: '/merchant/notifications',\n body: data,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { CreatePayoutParams, MutationOptions, PaginatedResponse, PendingAffiliate, Payout, PayoutStats, PayoutStatus } from '../types/index.js'\n\nexport class PayoutsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: PayoutStatus\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Payout>> {\n return this.http.request({ method: 'GET', path: '/payouts', query: params })\n }\n\n listPending(params?: {\n programId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<PendingAffiliate>> {\n return this.http.request({ method: 'GET', path: '/payouts/pending', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<PayoutStats> {\n const envelope = await this.http.request<{ data: PayoutStats; meta: unknown }>({\n method: 'GET',\n path: '/payouts/stats',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreatePayoutParams, options?: MutationOptions): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'POST',\n path: '/payouts',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Affiliate,\n Coupon,\n CreateCouponParams,\n CreateInviteParams,\n CreateProgramParams,\n Invite,\n MutationOptions,\n PaginatedResponse,\n Program,\n ProgramStats,\n ProgramStatus,\n UpdateProgramMarketplaceParams,\n UpdateProgramParams,\n} from '../types/index.js'\n\nexport class ProgramsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n status?: ProgramStatus\n }): Promise<PaginatedResponse<Program>> {\n return this.http.request({ method: 'GET', path: '/programs', query: params })\n }\n\n async *listAll(params?: {\n pageSize?: number\n }): AsyncGenerator<Program> {\n let page = 1\n const pageSize = params?.pageSize ?? 100\n\n while (true) {\n const response = await this.list({ page, limit: pageSize })\n yield* response.data\n\n if (!response.meta.hasMore) {\n break\n }\n\n page += 1\n }\n }\n\n async get(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async create(data: CreateProgramParams, options?: MutationOptions): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'POST',\n path: '/programs',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateProgramParams): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async stats(id: string, params?: { period?: string }): Promise<ProgramStats> {\n const envelope = await this.http.request<{ data: ProgramStats; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/stats`,\n query: params,\n })\n return envelope.data\n }\n\n listAffiliates(\n id: string,\n params?: { includeBlocked?: boolean; cursor?: string; limit?: number; page?: number; pageSize?: number; offset?: number }\n ): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({\n method: 'GET',\n path: `/programs/${id}/affiliates`,\n query: params,\n })\n }\n\n async listCoupons(id: string): Promise<Coupon[]> {\n const envelope = await this.http.request<{ data: Coupon[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/coupons`,\n })\n return envelope.data\n }\n\n async createCoupon(id: string, data: CreateCouponParams, options?: MutationOptions): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/coupons`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async createInvite(\n id: string,\n data: CreateInviteParams,\n options?: MutationOptions\n ): Promise<Invite> {\n const envelope = await this.http.request<{ data: Invite; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/invites`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async listInvites(id: string): Promise<Invite[]> {\n const envelope = await this.http.request<{ data: Invite[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/invites`,\n })\n return envelope.data\n }\n\n async deleteCoupon(couponId: string): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'DELETE',\n path: `/coupons/${couponId}`,\n })\n return envelope.data\n }\n\n async updateMarketplace(id: string, data: UpdateProgramMarketplaceParams): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}/marketplace`,\n body: data,\n })\n return envelope.data\n }\n}\n","import { HttpClient } from './http.js'\nimport type { AgentRefConfig } from './types/index.js'\nimport { AffiliatesResource } from './resources/affiliates.js'\nimport { BillingResource } from './resources/billing.js'\nimport { ConversionsResource } from './resources/conversions.js'\nimport { FlagsResource } from './resources/flags.js'\nimport { MerchantResource } from './resources/merchant.js'\nimport { PayoutsResource } from './resources/payouts.js'\nimport { ProgramsResource } from './resources/programs.js'\n\nexport class AgentRef {\n readonly programs: ProgramsResource\n readonly affiliates: AffiliatesResource\n readonly conversions: ConversionsResource\n readonly payouts: PayoutsResource\n readonly flags: FlagsResource\n readonly billing: BillingResource\n readonly merchant: MerchantResource\n\n constructor(config?: AgentRefConfig) {\n const http = new HttpClient(config)\n\n this.programs = new ProgramsResource(http)\n this.affiliates = new AffiliatesResource(http)\n this.conversions = new ConversionsResource(http)\n this.payouts = new PayoutsResource(http)\n this.flags = new FlagsResource(http)\n this.billing = new BillingResource(http)\n this.merchant = new MerchantResource(http)\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/resources/affiliates.ts","../src/resources/billing.ts","../src/resources/conversions.ts","../src/resources/flags.ts","../src/resources/merchant.ts","../src/resources/payouts.ts","../src/resources/programs.ts","../src/resources/webhooks.ts","../src/client.ts"],"sourcesContent":["export class AgentRefError extends Error {\n readonly code: string\n readonly status: number\n readonly requestId: string\n\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message)\n this.name = 'AgentRefError'\n this.code = code\n this.status = status\n this.requestId = requestId\n Object.setPrototypeOf(this, new.target.prototype)\n }\n}\n\nexport class AuthError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 401, requestId)\n this.name = 'AuthError'\n }\n}\n\nexport class ForbiddenError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 403, requestId)\n this.name = 'ForbiddenError'\n }\n}\n\nexport class ValidationError extends AgentRefError {\n readonly details: unknown\n\n constructor(message: string, code: string, requestId: string, details?: unknown) {\n super(message, code, 400, requestId)\n this.name = 'ValidationError'\n this.details = details\n }\n}\n\nexport class NotFoundError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 404, requestId)\n this.name = 'NotFoundError'\n }\n}\n\nexport class ConflictError extends AgentRefError {\n constructor(message: string, code: string, requestId: string) {\n super(message, code, 409, requestId)\n this.name = 'ConflictError'\n }\n}\n\nexport class RateLimitError extends AgentRefError {\n readonly retryAfter: number\n\n constructor(message: string, code: string, requestId: string, retryAfter: number) {\n super(message, code, 429, requestId)\n this.name = 'RateLimitError'\n this.retryAfter = retryAfter\n }\n}\n\nexport class ServerError extends AgentRefError {\n constructor(message: string, code: string, status: number, requestId: string) {\n super(message, code, status, requestId)\n this.name = 'ServerError'\n }\n}\n","import {\n AgentRefError,\n AuthError,\n ConflictError,\n ForbiddenError,\n NotFoundError,\n RateLimitError,\n ServerError,\n ValidationError,\n} from './errors.js'\nimport type { AgentRefConfig } from './types/index.js'\n\nexport type HttpMethod = 'GET' | 'HEAD' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'\n\nconst SAFE_METHODS: ReadonlySet<HttpMethod> = new Set(['GET', 'HEAD'])\n\nexport interface RequestOptions {\n method: HttpMethod\n path: string\n body?: unknown\n query?: Record<string, string | number | boolean | undefined>\n idempotencyKey?: string\n}\n\nconst DEFAULT_BASE_URL = 'https://www.agentref.dev/api/v1'\nconst DEFAULT_TIMEOUT = 30_000\nconst DEFAULT_MAX_RETRIES = 2\n\ndeclare const __SDK_VERSION__: string\nconst VERSION = typeof __SDK_VERSION__ === 'string' ? __SDK_VERSION__ : '0.0.0'\n\nfunction hasUsableIdempotencyKey(idempotencyKey: string | undefined): boolean {\n return typeof idempotencyKey === 'string' && idempotencyKey.trim().length > 0\n}\n\nexport class HttpClient {\n private readonly apiKey: string\n private readonly baseUrl: string\n private readonly timeout: number\n private readonly maxRetries: number\n\n constructor(config: AgentRefConfig = {}) {\n if (typeof window !== 'undefined' && !config.dangerouslyAllowBrowser) {\n throw new Error(\n '[AgentRef] Refusing to initialize in browser context. API keys must not be exposed client-side. Use a server-side proxy to call the AgentRef API instead. To override: set dangerouslyAllowBrowser: true (understand the security implications first).'\n )\n }\n\n const apiKey = config.apiKey ?? process.env['AGENTREF_API_KEY']\n if (!apiKey) {\n throw new Error(\n '[AgentRef] API key is required. Pass it as apiKey or set the AGENTREF_API_KEY environment variable.'\n )\n }\n\n this.apiKey = apiKey\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/$/, '')\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT\n this.maxRetries = config.maxRetries ?? DEFAULT_MAX_RETRIES\n }\n\n async request<T>(options: RequestOptions): Promise<T> {\n const url = this.buildUrl(options.path, options.query)\n const isSafe = SAFE_METHODS.has(options.method)\n const hasIdempotency = options.method === 'POST' && hasUsableIdempotencyKey(options.idempotencyKey)\n const canRetry = isSafe || hasIdempotency\n const maxAttempts = canRetry ? this.maxRetries + 1 : 1\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n let response: Response\n\n try {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n 'Content-Type': 'application/json',\n 'User-Agent': `agentref-node/${VERSION}`,\n }\n\n if (hasIdempotency) {\n headers['Idempotency-Key'] = options.idempotencyKey!.trim()\n }\n\n response = await fetch(url, {\n method: options.method,\n headers,\n body: options.body !== undefined ? JSON.stringify(options.body) : undefined,\n signal: AbortSignal.timeout(this.timeout),\n })\n } catch (error) {\n if (canRetry && attempt < maxAttempts - 1) {\n await this.wait(this.backoff(attempt))\n continue\n }\n throw error\n }\n\n if (!response.ok) {\n const parsedError = await this.parseError(response)\n\n if (canRetry && this.isRetryable(response.status) && attempt < maxAttempts - 1) {\n const delay =\n response.status === 429\n ? this.retryAfterToMs(response.headers.get('Retry-After'))\n : this.backoff(attempt)\n await this.wait(delay)\n continue\n }\n\n throw parsedError\n }\n\n return response.json() as Promise<T>\n }\n\n throw new ServerError('Request failed after retries', 'REQUEST_RETRY_EXHAUSTED', 500, '')\n }\n\n private buildUrl(path: string, query?: Record<string, string | number | boolean | undefined>): string {\n const normalizedPath = path.startsWith('/') ? path : `/${path}`\n const url = new URL(`${this.baseUrl}${normalizedPath}`)\n\n if (query) {\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value))\n }\n }\n }\n\n return url.toString()\n }\n\n private async parseError(response: Response): Promise<AgentRefError> {\n const json = (await response.json().catch(() => ({}))) as {\n error?: { code?: string; message?: string; details?: unknown }\n meta?: { requestId?: string }\n }\n\n const code = json.error?.code ?? 'UNKNOWN_ERROR'\n const message = json.error?.message ?? response.statusText\n const requestId = json.meta?.requestId ?? ''\n const details = json.error?.details\n\n if (response.status === 400) return new ValidationError(message, code, requestId, details)\n if (response.status === 401) return new AuthError(message, code, requestId)\n if (response.status === 403) return new ForbiddenError(message, code, requestId)\n if (response.status === 404) return new NotFoundError(message, code, requestId)\n if (response.status === 409) return new ConflictError(message, code, requestId)\n if (response.status === 429) {\n return new RateLimitError(message, code, requestId, this.retryAfterToSeconds(response.headers.get('Retry-After')))\n }\n\n return new ServerError(message, code, response.status, requestId)\n }\n\n private isRetryable(status: number): boolean {\n return status === 429 || status >= 500\n }\n\n private retryAfterToSeconds(headerValue: string | null): number {\n if (!headerValue) return 60\n\n const numericSeconds = Number(headerValue)\n if (!Number.isNaN(numericSeconds) && numericSeconds >= 0) {\n return Math.ceil(numericSeconds)\n }\n\n const asDate = Date.parse(headerValue)\n if (!Number.isNaN(asDate)) {\n const deltaMs = asDate - Date.now()\n return Math.max(0, Math.ceil(deltaMs / 1000))\n }\n\n return 60\n }\n\n private retryAfterToMs(headerValue: string | null): number {\n return this.retryAfterToSeconds(headerValue) * 1000\n }\n\n private wait(ms: number): Promise<void> {\n return new Promise((resolve) => {\n setTimeout(resolve, ms)\n })\n }\n\n private backoff(attempt: number): number {\n return 500 * Math.pow(2, attempt)\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Affiliate, AffiliateSortBy, AffiliateStatus, MutationOptions, PaginatedResponse, SortOrder } from '../types/index.js'\n\nexport class AffiliatesResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n includeBlocked?: boolean\n search?: string\n sortBy?: AffiliateSortBy\n sortOrder?: SortOrder\n status?: AffiliateStatus\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({ method: 'GET', path: '/affiliates', query: params })\n }\n\n async get(id: string, options?: { include?: 'stats' }): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'GET',\n path: `/affiliates/${id}`,\n query: options?.include ? { include: options.include } : undefined,\n })\n return envelope.data\n }\n\n async approve(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/approve`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async block(id: string, data?: { reason?: string }, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/block`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async unblock(id: string, options?: MutationOptions): Promise<Affiliate> {\n const envelope = await this.http.request<{ data: Affiliate; meta: unknown }>({\n method: 'POST',\n path: `/affiliates/${id}/unblock`,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { BillingStatus, BillingTier, MutationOptions } from '../types/index.js'\n\nexport class BillingResource {\n constructor(private readonly http: HttpClient) {}\n\n async current(): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'GET',\n path: '/billing',\n })\n return envelope.data\n }\n\n async tiers(): Promise<BillingTier[]> {\n const envelope = await this.http.request<{ data: BillingTier[]; meta: unknown }>({\n method: 'GET',\n path: '/billing/tiers',\n })\n return envelope.data\n }\n\n async subscribe(data: { tier: 'starter' | 'growth' | 'pro' | 'scale' }, options?: MutationOptions): Promise<BillingStatus> {\n const envelope = await this.http.request<{ data: BillingStatus; meta: unknown }>({\n method: 'POST',\n path: '/billing/subscribe',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Conversion, ConversionStats, PaginatedResponse } from '../types/index.js'\n\nexport class ConversionsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: string\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Conversion>> {\n return this.http.request({ method: 'GET', path: '/conversions', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<ConversionStats> {\n const envelope = await this.http.request<{ data: ConversionStats; meta: unknown }>({\n method: 'GET',\n path: '/conversions/stats',\n query: params,\n })\n return envelope.data\n }\n\n async recent(params?: { limit?: number }): Promise<Conversion[]> {\n const envelope = await this.http.request<{ data: Conversion[]; meta: unknown }>({\n method: 'GET',\n path: '/conversions/recent',\n query: params,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { Flag, FlagStats, MutationOptions, PaginatedResponse, ResolveFlagParams } from '../types/index.js'\n\nexport class FlagsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n status?: string\n type?: string\n affiliateId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Flag>> {\n return this.http.request({ method: 'GET', path: '/flags', query: params })\n }\n\n async stats(): Promise<FlagStats> {\n const envelope = await this.http.request<{ data: FlagStats; meta: unknown }>({\n method: 'GET',\n path: '/flags/stats',\n })\n return envelope.data\n }\n\n async resolve(id: string, data: ResolveFlagParams, options?: MutationOptions): Promise<Flag> {\n const envelope = await this.http.request<{ data: Flag; meta: unknown }>({\n method: 'POST',\n path: `/flags/${id}/resolve`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Merchant,\n NotificationPreferences,\n PayoutInfo,\n UpdateMerchantParams,\n UpdateNotificationPreferencesParams,\n UpdatePayoutInfoParams,\n} from '../types/index.js'\n\nexport class MerchantResource {\n constructor(private readonly http: HttpClient) {}\n\n async get(): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'GET',\n path: '/merchant',\n })\n return envelope.data\n }\n\n async update(data: UpdateMerchantParams): Promise<Merchant> {\n const envelope = await this.http.request<{ data: Merchant; meta: unknown }>({\n method: 'PATCH',\n path: '/merchant',\n body: data,\n })\n return envelope.data\n }\n\n async getPayoutInfo(): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'GET',\n path: '/me/payout-info',\n })\n return envelope.data\n }\n\n async updatePayoutInfo(data: UpdatePayoutInfoParams): Promise<PayoutInfo> {\n const envelope = await this.http.request<{ data: PayoutInfo; meta: unknown }>({\n method: 'PATCH',\n path: '/me/payout-info',\n body: data,\n })\n return envelope.data\n }\n\n async getNotifications(): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'GET',\n path: '/merchant/notifications',\n })\n return envelope.data\n }\n\n async updateNotifications(data: UpdateNotificationPreferencesParams): Promise<NotificationPreferences> {\n const envelope = await this.http.request<{ data: NotificationPreferences; meta: unknown }>({\n method: 'PUT',\n path: '/merchant/notifications',\n body: data,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type { CreatePayoutParams, MutationOptions, PaginatedResponse, PendingAffiliate, Payout, PayoutStats, PayoutStatus } from '../types/index.js'\n\nexport class PayoutsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n programId?: string\n affiliateId?: string\n status?: PayoutStatus\n startDate?: string\n endDate?: string\n from?: string\n to?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<Payout>> {\n return this.http.request({ method: 'GET', path: '/payouts', query: params })\n }\n\n listPending(params?: {\n programId?: string\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n }): Promise<PaginatedResponse<PendingAffiliate>> {\n return this.http.request({ method: 'GET', path: '/payouts/pending', query: params })\n }\n\n async stats(params?: { programId?: string; period?: '7d' | '30d' | '90d' | 'all' }): Promise<PayoutStats> {\n const envelope = await this.http.request<{ data: PayoutStats; meta: unknown }>({\n method: 'GET',\n path: '/payouts/stats',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreatePayoutParams, options?: MutationOptions): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'POST',\n path: '/payouts',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n Affiliate,\n Coupon,\n ConnectProgramStripeParams,\n ConnectProgramStripeResponse,\n CreateCouponParams,\n CreateInviteParams,\n CreateProgramParams,\n DisconnectProgramStripeResponse,\n Invite,\n MutationOptions,\n PaginatedResponse,\n Program,\n ProgramDetail,\n ProgramDomainVerificationInitResponse,\n ProgramDomainVerificationStatusResponse,\n ProgramStats,\n SuccessResponse,\n ProgramStatus,\n UpdateProgramMarketplaceParams,\n UpdateProgramParams,\n} from '../types/index.js'\n\nexport class ProgramsResource {\n constructor(private readonly http: HttpClient) {}\n\n list(params?: {\n cursor?: string\n limit?: number\n page?: number\n pageSize?: number\n offset?: number\n status?: ProgramStatus\n }): Promise<PaginatedResponse<Program>> {\n return this.http.request({ method: 'GET', path: '/programs', query: params })\n }\n\n async *listAll(params?: {\n pageSize?: number\n }): AsyncGenerator<Program> {\n let page = 1\n const pageSize = params?.pageSize ?? 100\n\n while (true) {\n const response = await this.list({ page, limit: pageSize })\n yield* response.data\n\n if (!response.meta.hasMore) {\n break\n }\n\n page += 1\n }\n }\n\n async get(id: string): Promise<ProgramDetail> {\n const envelope = await this.http.request<{ data: ProgramDetail; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async create(data: CreateProgramParams, options?: MutationOptions): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'POST',\n path: '/programs',\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateProgramParams): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<Program> {\n const envelope = await this.http.request<{ data: Program; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}`,\n })\n return envelope.data\n }\n\n async stats(id: string, params?: { period?: string }): Promise<ProgramStats> {\n const envelope = await this.http.request<{ data: ProgramStats; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/stats`,\n query: params,\n })\n return envelope.data\n }\n\n listAffiliates(\n id: string,\n params?: { includeBlocked?: boolean; cursor?: string; limit?: number; page?: number; pageSize?: number; offset?: number }\n ): Promise<PaginatedResponse<Affiliate>> {\n return this.http.request({\n method: 'GET',\n path: `/programs/${id}/affiliates`,\n query: params,\n })\n }\n\n async listCoupons(id: string): Promise<Coupon[]> {\n const envelope = await this.http.request<{ data: Coupon[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/coupons`,\n })\n return envelope.data\n }\n\n async createCoupon(id: string, data: CreateCouponParams, options?: MutationOptions): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/coupons`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async createInvite(\n id: string,\n data: CreateInviteParams,\n options?: MutationOptions\n ): Promise<Invite> {\n const envelope = await this.http.request<{ data: Invite; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/invites`,\n body: data,\n idempotencyKey: options?.idempotencyKey,\n })\n return envelope.data\n }\n\n async listInvites(id: string): Promise<Invite[]> {\n const envelope = await this.http.request<{ data: Invite[]; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/invites`,\n })\n return envelope.data\n }\n\n async deleteCoupon(couponId: string): Promise<Coupon> {\n const envelope = await this.http.request<{ data: Coupon; meta: unknown }>({\n method: 'DELETE',\n path: `/coupons/${couponId}`,\n })\n return envelope.data\n }\n\n async updateMarketplace(id: string, data: UpdateProgramMarketplaceParams): Promise<Record<string, unknown>> {\n const envelope = await this.http.request<{ data: Record<string, unknown>; meta: unknown }>({\n method: 'PATCH',\n path: `/programs/${id}/marketplace`,\n body: data,\n })\n return envelope.data\n }\n\n async connectStripe(id: string, data?: ConnectProgramStripeParams): Promise<ConnectProgramStripeResponse> {\n const envelope = await this.http.request<{ data: ConnectProgramStripeResponse; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/connect-stripe`,\n body: data,\n })\n return envelope.data\n }\n\n async disconnectStripe(id: string): Promise<DisconnectProgramStripeResponse> {\n const envelope = await this.http.request<{ data: DisconnectProgramStripeResponse; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}/connect-stripe`,\n })\n return envelope.data\n }\n\n async verifyDomain(id: string, data: { domain: string }): Promise<ProgramDomainVerificationInitResponse> {\n const envelope = await this.http.request<{ data: ProgramDomainVerificationInitResponse; meta: unknown }>({\n method: 'POST',\n path: `/programs/${id}/verify-domain`,\n body: data,\n })\n return envelope.data\n }\n\n async removeDomainVerification(id: string): Promise<SuccessResponse> {\n const envelope = await this.http.request<{ data: SuccessResponse; meta: unknown }>({\n method: 'DELETE',\n path: `/programs/${id}/verify-domain`,\n })\n return envelope.data\n }\n\n async getDomainStatus(id: string): Promise<ProgramDomainVerificationStatusResponse> {\n const envelope = await this.http.request<{ data: ProgramDomainVerificationStatusResponse; meta: unknown }>({\n method: 'GET',\n path: `/programs/${id}/verify-domain/status`,\n })\n return envelope.data\n }\n}\n","import type { HttpClient } from '../http.js'\nimport type {\n CreateWebhookEndpointParams,\n SuccessResponse,\n UpdateWebhookEndpointParams,\n WebhookEndpoint,\n WebhookSecretResponse,\n} from '../types/index.js'\n\nexport class WebhooksResource {\n constructor(private readonly http: HttpClient) {}\n\n async list(params?: { programId?: string }): Promise<WebhookEndpoint[]> {\n const envelope = await this.http.request<{ data: WebhookEndpoint[]; meta: unknown }>({\n method: 'GET',\n path: '/webhooks',\n query: params,\n })\n return envelope.data\n }\n\n async create(data: CreateWebhookEndpointParams): Promise<WebhookSecretResponse> {\n const envelope = await this.http.request<{ data: WebhookSecretResponse; meta: unknown }>({\n method: 'POST',\n path: '/webhooks',\n body: data,\n })\n return envelope.data\n }\n\n async get(id: string): Promise<WebhookEndpoint> {\n const envelope = await this.http.request<{ data: WebhookEndpoint; meta: unknown }>({\n method: 'GET',\n path: `/webhooks/${id}`,\n })\n return envelope.data\n }\n\n async update(id: string, data: UpdateWebhookEndpointParams): Promise<WebhookEndpoint> {\n const envelope = await this.http.request<{ data: WebhookEndpoint; meta: unknown }>({\n method: 'PATCH',\n path: `/webhooks/${id}`,\n body: data,\n })\n return envelope.data\n }\n\n async delete(id: string): Promise<SuccessResponse> {\n const envelope = await this.http.request<{ data: SuccessResponse; meta: unknown }>({\n method: 'DELETE',\n path: `/webhooks/${id}`,\n })\n return envelope.data\n }\n\n async rotateSecret(id: string): Promise<WebhookSecretResponse> {\n const envelope = await this.http.request<{ data: WebhookSecretResponse; meta: unknown }>({\n method: 'POST',\n path: `/webhooks/${id}/rotate-secret`,\n })\n return envelope.data\n }\n}\n","import { HttpClient } from './http.js'\nimport type { AgentRefConfig } from './types/index.js'\nimport { AffiliatesResource } from './resources/affiliates.js'\nimport { BillingResource } from './resources/billing.js'\nimport { ConversionsResource } from './resources/conversions.js'\nimport { FlagsResource } from './resources/flags.js'\nimport { MerchantResource } from './resources/merchant.js'\nimport { PayoutsResource } from './resources/payouts.js'\nimport { ProgramsResource } from './resources/programs.js'\nimport { WebhooksResource } from './resources/webhooks.js'\n\nexport class AgentRef {\n readonly programs: ProgramsResource\n readonly affiliates: AffiliatesResource\n readonly conversions: ConversionsResource\n readonly payouts: PayoutsResource\n readonly flags: FlagsResource\n readonly billing: BillingResource\n readonly merchant: MerchantResource\n readonly webhooks: WebhooksResource\n\n constructor(config?: AgentRefConfig) {\n const http = new HttpClient(config)\n\n this.programs = new ProgramsResource(http)\n this.affiliates = new AffiliatesResource(http)\n this.conversions = new ConversionsResource(http)\n this.payouts = new PayoutsResource(http)\n this.flags = new FlagsResource(http)\n this.billing = new BillingResource(http)\n this.merchant = new MerchantResource(http)\n this.webhooks = new WebhooksResource(http)\n }\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentref",
3
- "version": "5.0.0",
3
+ "version": "5.0.1",
4
4
  "description": "Official TypeScript/JavaScript SDK for the AgentRef Affiliate API",
5
5
  "author": "AgentRef <hi@agentref.dev>",
6
6
  "license": "MIT",