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 +7 -0
- package/README.md +5 -3
- package/dist/index.cjs +91 -15
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +110 -27
- package/dist/index.d.ts +110 -27
- package/dist/index.mjs +91 -15
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
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_
|
|
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`, `
|
|
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.
|
|
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:
|
package/dist/index.cjs.map
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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<
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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<
|
|
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
|
|
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.
|
|
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 {
|
package/dist/index.mjs.map
CHANGED
|
@@ -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":[]}
|