@iterable/api 0.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/LICENSE +21 -0
- package/README.md +74 -0
- package/dist/client/base.d.ts +33 -0
- package/dist/client/base.d.ts.map +1 -0
- package/dist/client/base.js +155 -0
- package/dist/client/base.js.map +1 -0
- package/dist/client/campaigns.d.ts +71 -0
- package/dist/client/campaigns.d.ts.map +1 -0
- package/dist/client/campaigns.js +125 -0
- package/dist/client/campaigns.js.map +1 -0
- package/dist/client/catalogs.d.ts +60 -0
- package/dist/client/catalogs.d.ts.map +1 -0
- package/dist/client/catalogs.js +138 -0
- package/dist/client/catalogs.js.map +1 -0
- package/dist/client/events.d.ts +38 -0
- package/dist/client/events.d.ts.map +1 -0
- package/dist/client/events.js +38 -0
- package/dist/client/events.js.map +1 -0
- package/dist/client/experiments.d.ts +24 -0
- package/dist/client/experiments.d.ts.map +1 -0
- package/dist/client/experiments.js +29 -0
- package/dist/client/experiments.js.map +1 -0
- package/dist/client/export.d.ts +27 -0
- package/dist/client/export.d.ts.map +1 -0
- package/dist/client/export.js +31 -0
- package/dist/client/export.js.map +1 -0
- package/dist/client/index.d.ts +315 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +25 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/journeys.d.ts +26 -0
- package/dist/client/journeys.d.ts.map +1 -0
- package/dist/client/journeys.js +32 -0
- package/dist/client/journeys.js.map +1 -0
- package/dist/client/lists.d.ts +39 -0
- package/dist/client/lists.d.ts.map +1 -0
- package/dist/client/lists.js +80 -0
- package/dist/client/lists.js.map +1 -0
- package/dist/client/messaging.d.ts +39 -0
- package/dist/client/messaging.d.ts.map +1 -0
- package/dist/client/messaging.js +110 -0
- package/dist/client/messaging.js.map +1 -0
- package/dist/client/snippets.d.ts +37 -0
- package/dist/client/snippets.d.ts.map +1 -0
- package/dist/client/snippets.js +29 -0
- package/dist/client/snippets.js.map +1 -0
- package/dist/client/subscriptions.d.ts +26 -0
- package/dist/client/subscriptions.d.ts.map +1 -0
- package/dist/client/subscriptions.js +31 -0
- package/dist/client/subscriptions.js.map +1 -0
- package/dist/client/templates.d.ts +52 -0
- package/dist/client/templates.d.ts.map +1 -0
- package/dist/client/templates.js +132 -0
- package/dist/client/templates.js.map +1 -0
- package/dist/client/users.d.ts +76 -0
- package/dist/client/users.d.ts.map +1 -0
- package/dist/client/users.js +115 -0
- package/dist/client/users.js.map +1 -0
- package/dist/client/webhooks.d.ts +25 -0
- package/dist/client/webhooks.d.ts.map +1 -0
- package/dist/client/webhooks.js +17 -0
- package/dist/client/webhooks.js.map +1 -0
- package/dist/config.d.ts +26 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +51 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +45 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +144 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +3 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +32 -0
- package/dist/logger.js.map +1 -0
- package/dist/types/campaigns.d.ts +307 -0
- package/dist/types/campaigns.d.ts.map +1 -0
- package/dist/types/campaigns.js +226 -0
- package/dist/types/campaigns.js.map +1 -0
- package/dist/types/catalogs.d.ts +138 -0
- package/dist/types/catalogs.d.ts.map +1 -0
- package/dist/types/catalogs.js +139 -0
- package/dist/types/catalogs.js.map +1 -0
- package/dist/types/common.d.ts +145 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +110 -0
- package/dist/types/common.js.map +1 -0
- package/dist/types/events.d.ts +124 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +118 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/experiments.d.ts +14 -0
- package/dist/types/experiments.d.ts.map +1 -0
- package/dist/types/experiments.js +24 -0
- package/dist/types/experiments.js.map +1 -0
- package/dist/types/export.d.ts +121 -0
- package/dist/types/export.d.ts.map +1 -0
- package/dist/types/export.js +105 -0
- package/dist/types/export.js.map +1 -0
- package/dist/types/journeys.d.ts +72 -0
- package/dist/types/journeys.d.ts.map +1 -0
- package/dist/types/journeys.js +65 -0
- package/dist/types/journeys.js.map +1 -0
- package/dist/types/lists.d.ts +149 -0
- package/dist/types/lists.d.ts.map +1 -0
- package/dist/types/lists.js +140 -0
- package/dist/types/lists.js.map +1 -0
- package/dist/types/messaging.d.ts +246 -0
- package/dist/types/messaging.d.ts.map +1 -0
- package/dist/types/messaging.js +323 -0
- package/dist/types/messaging.js.map +1 -0
- package/dist/types/snippets.d.ts +89 -0
- package/dist/types/snippets.d.ts.map +1 -0
- package/dist/types/snippets.js +85 -0
- package/dist/types/snippets.js.map +1 -0
- package/dist/types/subscriptions.d.ts +63 -0
- package/dist/types/subscriptions.d.ts.map +1 -0
- package/dist/types/subscriptions.js +40 -0
- package/dist/types/subscriptions.js.map +1 -0
- package/dist/types/templates.d.ts +315 -0
- package/dist/types/templates.d.ts.map +1 -0
- package/dist/types/templates.js +357 -0
- package/dist/types/templates.js.map +1 -0
- package/dist/types/users.d.ts +144 -0
- package/dist/types/users.d.ts.map +1 -0
- package/dist/types/users.js +189 -0
- package/dist/types/users.js.map +1 -0
- package/dist/types/webhooks.d.ts +52 -0
- package/dist/types/webhooks.d.ts.map +1 -0
- package/dist/types/webhooks.js +32 -0
- package/dist/types/webhooks.js.map +1 -0
- package/package.json +73 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Greg Methvin
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Iterable API Client
|
|
2
|
+
|
|
3
|
+
TypeScript client library for the [Iterable API](https://api.iterable.com/api/docs).
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @iterable/api
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
import { IterableClient } from '@iterable/api';
|
|
15
|
+
|
|
16
|
+
const client = new IterableClient({
|
|
17
|
+
apiKey: 'your-api-key'
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
const user = await client.getUserByEmail('user@example.com');
|
|
21
|
+
|
|
22
|
+
// Track event
|
|
23
|
+
await client.trackEvent({
|
|
24
|
+
email: 'user@example.com',
|
|
25
|
+
eventName: 'purchase',
|
|
26
|
+
dataFields: { amount: 99.99 }
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// Send email
|
|
30
|
+
await client.sendEmail({
|
|
31
|
+
campaignId: 123456,
|
|
32
|
+
recipientEmail: 'user@example.com'
|
|
33
|
+
});
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Configuration
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
// From environment variables
|
|
40
|
+
const client = new IterableClient(createIterableConfig());
|
|
41
|
+
|
|
42
|
+
// Or configure directly
|
|
43
|
+
const client = new IterableClient({
|
|
44
|
+
apiKey: 'your-api-key',
|
|
45
|
+
baseUrl: 'https://api.iterable.com', // optional
|
|
46
|
+
timeout: 30000, // optional
|
|
47
|
+
debug: false // optional
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Environment Variables
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
ITERABLE_API_KEY=your-api-key # Required
|
|
55
|
+
ITERABLE_DEBUG=true # Optional: Enable debug logging
|
|
56
|
+
LOG_LEVEL=info # Optional: Log level
|
|
57
|
+
LOG_FILE=./logs/iterable.log # Optional: Log to file
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Development
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
pnpm install
|
|
64
|
+
pnpm build # Build with linting
|
|
65
|
+
pnpm test # Run all tests
|
|
66
|
+
pnpm test:unit # Unit tests only
|
|
67
|
+
|
|
68
|
+
# Integration tests (requires API key)
|
|
69
|
+
ITERABLE_API_KEY=your-key pnpm test:integration
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## License
|
|
73
|
+
|
|
74
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AxiosInstance } from "axios";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { IterableConfig } from "../types/common.js";
|
|
4
|
+
export declare const DEFAULT_USER_AGENT: string;
|
|
5
|
+
/**
|
|
6
|
+
* Base client with shared infrastructure for all Iterable API operations
|
|
7
|
+
*/
|
|
8
|
+
export declare class BaseIterableClient {
|
|
9
|
+
#private;
|
|
10
|
+
client: AxiosInstance;
|
|
11
|
+
constructor(config?: IterableConfig, injectedClient?: AxiosInstance);
|
|
12
|
+
/**
|
|
13
|
+
* Parse NDJSON (newline-delimited JSON) response into an array of objects
|
|
14
|
+
*/
|
|
15
|
+
parseNdjson(data: string): any[];
|
|
16
|
+
/**
|
|
17
|
+
* Parse CSV response into an array of objects using csv-parse library
|
|
18
|
+
*/
|
|
19
|
+
parseCsv(data: string): any[];
|
|
20
|
+
validateResponse<T>(response: {
|
|
21
|
+
data: unknown;
|
|
22
|
+
config?: {
|
|
23
|
+
url?: string;
|
|
24
|
+
};
|
|
25
|
+
}, schema: z.ZodSchema<T>): T;
|
|
26
|
+
/**
|
|
27
|
+
* Clean up HTTP agents to prevent Jest from hanging
|
|
28
|
+
* Should be called when the client is no longer needed
|
|
29
|
+
*/
|
|
30
|
+
destroy(): void;
|
|
31
|
+
}
|
|
32
|
+
export type Constructor<T = object> = new (...args: any[]) => T;
|
|
33
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAMA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAQxB,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAWpD,eAAO,MAAM,kBAAkB,QAAwC,CAAC;AAExE;;GAEG;AACH,qBAAa,kBAAkB;;IACtB,MAAM,EAAE,aAAa,CAAC;gBAIjB,MAAM,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,aAAa;IAsFnE;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE;IA2BvC;;OAEG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,EAAE;IAoB7B,gBAAgB,CAAC,CAAC,EACvB,QAAQ,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,EACtD,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GACrB,CAAC;IAaJ;;;OAGG;IACI,OAAO,IAAI,IAAI;CAIvB;AAGD,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import http from "node:http";
|
|
3
|
+
import https from "node:https";
|
|
4
|
+
import { dirname, join } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import axios from "axios";
|
|
7
|
+
import { parse as csvParse } from "csv-parse/sync";
|
|
8
|
+
import { createIterableConfig } from "../config.js";
|
|
9
|
+
import { createIterableError, IterableResponseValidationError, } from "../errors.js";
|
|
10
|
+
import { logger } from "../logger.js";
|
|
11
|
+
// Get package version for User-Agent header
|
|
12
|
+
const packageJson = JSON.parse(readFileSync(join(dirname(fileURLToPath(import.meta.url)), "..", "..", "package.json"), "utf-8"));
|
|
13
|
+
// Export User-Agent value for reuse in other clients (like MCP server)
|
|
14
|
+
export const DEFAULT_USER_AGENT = `iterable-api/${packageJson.version}`;
|
|
15
|
+
/**
|
|
16
|
+
* Base client with shared infrastructure for all Iterable API operations
|
|
17
|
+
*/
|
|
18
|
+
export class BaseIterableClient {
|
|
19
|
+
client;
|
|
20
|
+
#httpAgent;
|
|
21
|
+
#httpsAgent;
|
|
22
|
+
constructor(config, injectedClient) {
|
|
23
|
+
const clientConfig = config || createIterableConfig();
|
|
24
|
+
if (injectedClient) {
|
|
25
|
+
this.client = injectedClient;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// Create agents with keepAlive for better performance
|
|
29
|
+
this.#httpAgent = new http.Agent({
|
|
30
|
+
keepAlive: true,
|
|
31
|
+
keepAliveMsecs: 1000,
|
|
32
|
+
});
|
|
33
|
+
this.#httpsAgent = new https.Agent({
|
|
34
|
+
keepAlive: true,
|
|
35
|
+
keepAliveMsecs: 1000,
|
|
36
|
+
});
|
|
37
|
+
const defaultHeaders = {
|
|
38
|
+
"Api-Key": clientConfig.apiKey,
|
|
39
|
+
"Content-Type": "application/json",
|
|
40
|
+
"User-Agent": DEFAULT_USER_AGENT,
|
|
41
|
+
};
|
|
42
|
+
this.client = axios.create({
|
|
43
|
+
baseURL: clientConfig.baseUrl || "https://api.iterable.com",
|
|
44
|
+
headers: {
|
|
45
|
+
...defaultHeaders,
|
|
46
|
+
...(clientConfig.customHeaders || {}),
|
|
47
|
+
},
|
|
48
|
+
timeout: clientConfig.timeout || 30000,
|
|
49
|
+
httpAgent: this.#httpAgent,
|
|
50
|
+
httpsAgent: this.#httpsAgent,
|
|
51
|
+
maxRedirects: 5,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
// Add error handling interceptor (always active)
|
|
55
|
+
if (!injectedClient) {
|
|
56
|
+
this.client.interceptors.response.use((response) => response, (error) => {
|
|
57
|
+
return Promise.reject(createIterableError(error));
|
|
58
|
+
});
|
|
59
|
+
// Add debug logging interceptors (only when debug is enabled)
|
|
60
|
+
if (clientConfig.debug) {
|
|
61
|
+
this.client.interceptors.request.use((request) => {
|
|
62
|
+
logger.debug("API request", {
|
|
63
|
+
method: request.method?.toUpperCase(),
|
|
64
|
+
url: request.url,
|
|
65
|
+
});
|
|
66
|
+
return request;
|
|
67
|
+
});
|
|
68
|
+
// Helper function to create log data from response/error
|
|
69
|
+
const createResponseLogData = (response, includeData = false) => ({
|
|
70
|
+
status: response.status,
|
|
71
|
+
url: response.config?.url || response.config.url,
|
|
72
|
+
...(includeData && { data: response.data }),
|
|
73
|
+
});
|
|
74
|
+
this.client.interceptors.response.use((response) => {
|
|
75
|
+
logger.debug("API response", createResponseLogData(response, clientConfig.debugVerbose));
|
|
76
|
+
return response;
|
|
77
|
+
}, (error) => {
|
|
78
|
+
if (error.response) {
|
|
79
|
+
logger.error("API error", createResponseLogData(error.response, true));
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
logger.error("Network error", { message: error.message });
|
|
83
|
+
}
|
|
84
|
+
// Error is already converted by the error handling interceptor above
|
|
85
|
+
return Promise.reject(error);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Parse NDJSON (newline-delimited JSON) response into an array of objects
|
|
92
|
+
*/
|
|
93
|
+
parseNdjson(data) {
|
|
94
|
+
if (!data) {
|
|
95
|
+
return [];
|
|
96
|
+
}
|
|
97
|
+
const lines = data.trim().split("\n");
|
|
98
|
+
const results = [];
|
|
99
|
+
for (const line of lines) {
|
|
100
|
+
const trimmedLine = line.trim();
|
|
101
|
+
if (trimmedLine) {
|
|
102
|
+
try {
|
|
103
|
+
const parsed = JSON.parse(trimmedLine);
|
|
104
|
+
results.push(parsed);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
// Skip invalid JSON lines but log them
|
|
108
|
+
logger.warn("Failed to parse NDJSON line", {
|
|
109
|
+
line: trimmedLine,
|
|
110
|
+
error: error instanceof Error ? error.message : String(error),
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return results;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Parse CSV response into an array of objects using csv-parse library
|
|
119
|
+
*/
|
|
120
|
+
parseCsv(data) {
|
|
121
|
+
if (!data) {
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
try {
|
|
125
|
+
return csvParse(data, {
|
|
126
|
+
columns: true, // Use first line as headers
|
|
127
|
+
skip_empty_lines: true,
|
|
128
|
+
trim: true,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
// Log error but don't throw - return empty array for graceful degradation
|
|
133
|
+
logger.warn("Failed to parse CSV data", {
|
|
134
|
+
error: error instanceof Error ? error.message : String(error),
|
|
135
|
+
});
|
|
136
|
+
return [];
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
validateResponse(response, schema) {
|
|
140
|
+
const result = schema.safeParse(response.data);
|
|
141
|
+
if (!result.success) {
|
|
142
|
+
throw new IterableResponseValidationError(200, response.data, result.error.message, response.config?.url);
|
|
143
|
+
}
|
|
144
|
+
return result.data;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Clean up HTTP agents to prevent Jest from hanging
|
|
148
|
+
* Should be called when the client is no longer needed
|
|
149
|
+
*/
|
|
150
|
+
destroy() {
|
|
151
|
+
this.#httpAgent?.destroy();
|
|
152
|
+
this.#httpsAgent?.destroy();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/client/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,YAAY,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EACL,mBAAmB,EACnB,+BAA+B,GAChC,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,4CAA4C;AAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC5B,YAAY,CACV,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EACzE,OAAO,CACR,CACF,CAAC;AAEF,uEAAuE;AACvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,WAAW,CAAC,OAAO,EAAE,CAAC;AAExE;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACtB,MAAM,CAAgB;IAC7B,UAAU,CAAc;IACxB,WAAW,CAAe;IAE1B,YAAY,MAAuB,EAAE,cAA8B;QACjE,MAAM,YAAY,GAAG,MAAM,IAAI,oBAAoB,EAAE,CAAC;QAEtD,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;gBAC/B,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;gBACjC,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,IAAI;aACrB,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG;gBACrB,SAAS,EAAE,YAAY,CAAC,MAAM;gBAC9B,cAAc,EAAE,kBAAkB;gBAClC,YAAY,EAAE,kBAAkB;aACjC,CAAC;YAEF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;gBACzB,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,0BAA0B;gBAC3D,OAAO,EAAE;oBACP,GAAG,cAAc;oBACjB,GAAG,CAAC,YAAY,CAAC,aAAa,IAAI,EAAE,CAAC;iBACtC;gBACD,OAAO,EAAE,YAAY,CAAC,OAAO,IAAI,KAAK;gBACtC,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,UAAU,EAAE,IAAI,CAAC,WAAW;gBAC5B,YAAY,EAAE,CAAC;aAChB,CAAC,CAAC;QACL,CAAC;QAED,iDAAiD;QACjD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACnC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EACtB,CAAC,KAAK,EAAE,EAAE;gBACR,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YACpD,CAAC,CACF,CAAC;YAEF,8DAA8D;YAC9D,IAAI,YAAY,CAAC,KAAK,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC/C,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE;wBAC1B,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE;wBACrC,GAAG,EAAE,OAAO,CAAC,GAAG;qBACjB,CAAC,CAAC;oBACH,OAAO,OAAO,CAAC;gBACjB,CAAC,CAAC,CAAC;gBAEH,yDAAyD;gBACzD,MAAM,qBAAqB,GAAG,CAAC,QAAa,EAAE,WAAW,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;oBACrE,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,GAAG;oBAChD,GAAG,CAAC,WAAW,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;iBAC5C,CAAC,CAAC;gBAEH,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACnC,CAAC,QAAQ,EAAE,EAAE;oBACX,MAAM,CAAC,KAAK,CACV,cAAc,EACd,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,YAAY,CAAC,CAC3D,CAAC;oBACF,OAAO,QAAQ,CAAC;gBAClB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;oBACR,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;wBACnB,MAAM,CAAC,KAAK,CACV,WAAW,EACX,qBAAqB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAC5C,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC5D,CAAC;oBACD,qEAAqE;oBACrE,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC/B,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,IAAY;QAC7B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,OAAO,GAAU,EAAE,CAAC;QAE1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACvC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,uCAAuC;oBACvC,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;wBACzC,IAAI,EAAE,WAAW;wBACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAC9D,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACI,QAAQ,CAAC,IAAY;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC;YACH,OAAO,QAAQ,CAAC,IAAI,EAAE;gBACpB,OAAO,EAAE,IAAI,EAAE,4BAA4B;gBAC3C,gBAAgB,EAAE,IAAI;gBACtB,IAAI,EAAE,IAAI;aACX,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0EAA0E;YAC1E,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;gBACtC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;YACH,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEM,gBAAgB,CACrB,QAAsD,EACtD,MAAsB;QAEtB,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,+BAA+B,CACvC,GAAG,EACH,QAAQ,CAAC,IAAI,EACb,MAAM,CAAC,KAAK,CAAC,OAAO,EACpB,QAAQ,CAAC,MAAM,EAAE,GAAG,CACrB,CAAC;QACJ,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,OAAO;QACZ,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;IAC9B,CAAC;CACF"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { AbortCampaignParams, ActivateTriggeredCampaignParams, ArchiveCampaignsParams, ArchiveCampaignsResponse, CancelCampaignParams, CreateCampaignParams, CreateCampaignResponse, DeactivateTriggeredCampaignParams, GetCampaignMetricsParams, GetCampaignParams, GetCampaignResponse, GetCampaignsParams, GetCampaignsResponse, GetChildCampaignsParams, GetChildCampaignsResponse, ScheduleCampaignParams, SendCampaignParams, TriggerCampaignParams } from "../types/campaigns.js";
|
|
2
|
+
import { IterableSuccessResponse } from "../types/common.js";
|
|
3
|
+
import type { BaseIterableClient, Constructor } from "./base.js";
|
|
4
|
+
/**
|
|
5
|
+
* Campaigns operations mixin
|
|
6
|
+
*/
|
|
7
|
+
export declare function Campaigns<T extends Constructor<BaseIterableClient>>(Base: T): {
|
|
8
|
+
new (...args: any[]): {
|
|
9
|
+
getCampaigns(params?: GetCampaignsParams, opts?: {
|
|
10
|
+
signal?: AbortSignal;
|
|
11
|
+
}): Promise<GetCampaignsResponse>;
|
|
12
|
+
getCampaign(params: GetCampaignParams, opts?: {
|
|
13
|
+
signal?: AbortSignal;
|
|
14
|
+
}): Promise<GetCampaignResponse>;
|
|
15
|
+
createCampaign(params: CreateCampaignParams): Promise<CreateCampaignResponse>;
|
|
16
|
+
getChildCampaigns(params: GetChildCampaignsParams, opts?: {
|
|
17
|
+
signal?: AbortSignal;
|
|
18
|
+
}): Promise<GetChildCampaignsResponse>;
|
|
19
|
+
getCampaignMetrics(options: GetCampaignMetricsParams): Promise<any[]>;
|
|
20
|
+
scheduleCampaign(params: ScheduleCampaignParams): Promise<IterableSuccessResponse>;
|
|
21
|
+
/**
|
|
22
|
+
* Abort a campaign
|
|
23
|
+
* Stops a campaign that is currently running
|
|
24
|
+
*/
|
|
25
|
+
abortCampaign(params: AbortCampaignParams): Promise<IterableSuccessResponse>;
|
|
26
|
+
/**
|
|
27
|
+
* Cancel a scheduled or recurring campaign
|
|
28
|
+
*/
|
|
29
|
+
cancelCampaign(params: CancelCampaignParams): Promise<IterableSuccessResponse>;
|
|
30
|
+
/**
|
|
31
|
+
* Activate a triggered campaign
|
|
32
|
+
* Note: API triggered campaign activation must be enabled for your project
|
|
33
|
+
*/
|
|
34
|
+
activateTriggeredCampaign(params: ActivateTriggeredCampaignParams): Promise<IterableSuccessResponse>;
|
|
35
|
+
/**
|
|
36
|
+
* Deactivate a triggered campaign
|
|
37
|
+
* Note: API triggered campaign deactivation must be enabled for your project
|
|
38
|
+
*/
|
|
39
|
+
deactivateTriggeredCampaign(params: DeactivateTriggeredCampaignParams): Promise<IterableSuccessResponse>;
|
|
40
|
+
/**
|
|
41
|
+
* Archive one or more campaigns
|
|
42
|
+
* This behaves the same as the archive feature in the UI:
|
|
43
|
+
* - Scheduled or recurring campaigns will be cancelled
|
|
44
|
+
* - Running campaigns will be aborted
|
|
45
|
+
* - Archived campaigns will be hidden from the Campaigns page but viewable in the Archived tab
|
|
46
|
+
* Rate limit: 5 requests/second, per API key
|
|
47
|
+
*/
|
|
48
|
+
archiveCampaigns(params: ArchiveCampaignsParams): Promise<ArchiveCampaignsResponse>;
|
|
49
|
+
/**
|
|
50
|
+
* Trigger a campaign to send to specified lists
|
|
51
|
+
*/
|
|
52
|
+
triggerCampaign(params: TriggerCampaignParams): Promise<IterableSuccessResponse>;
|
|
53
|
+
/**
|
|
54
|
+
* Send an existing campaign immediately
|
|
55
|
+
*/
|
|
56
|
+
sendCampaign(params: SendCampaignParams): Promise<IterableSuccessResponse>;
|
|
57
|
+
client: import("axios").AxiosInstance;
|
|
58
|
+
"__#private@#httpAgent"?: import("http").Agent;
|
|
59
|
+
"__#private@#httpsAgent"?: import("https").Agent;
|
|
60
|
+
parseNdjson(data: string): any[];
|
|
61
|
+
parseCsv(data: string): any[];
|
|
62
|
+
validateResponse<T_1>(response: {
|
|
63
|
+
data: unknown;
|
|
64
|
+
config?: {
|
|
65
|
+
url?: string;
|
|
66
|
+
};
|
|
67
|
+
}, schema: import("zod").ZodType<T_1>): T_1;
|
|
68
|
+
destroy(): void;
|
|
69
|
+
};
|
|
70
|
+
} & T;
|
|
71
|
+
//# sourceMappingURL=campaigns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaigns.d.ts","sourceRoot":"","sources":["../../src/client/campaigns.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,+BAA+B,EAC/B,sBAAsB,EACtB,wBAAwB,EAExB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EAEtB,iCAAiC,EACjC,wBAAwB,EACxB,iBAAiB,EACjB,mBAAmB,EAEnB,kBAAkB,EAClB,oBAAoB,EAEpB,uBAAuB,EACvB,yBAAyB,EAEzB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,uBAAuB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAEjE;;GAEG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,WAAW,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC;;8BAG7D,kBAAkB,SACpB;YACL,MAAM,CAAC,EAAE,WAAW,CAAC;SACtB,GACA,OAAO,CAAC,oBAAoB,CAAC;4BAwBtB,iBAAiB,SAClB;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GAC9B,OAAO,CAAC,mBAAmB,CAAC;+BASrB,oBAAoB,GAC3B,OAAO,CAAC,sBAAsB,CAAC;kCAMxB,uBAAuB,SACxB;YACL,MAAM,CAAC,EAAE,WAAW,CAAC;SACtB,GACA,OAAO,CAAC,yBAAyB,CAAC;oCAwB1B,wBAAwB,GAChC,OAAO,CAAC,GAAG,EAAE,CAAC;iCAoBP,sBAAsB,GAC7B,OAAO,CAAC,uBAAuB,CAAC;QASnC;;;WAGG;8BAEO,mBAAmB,GAC1B,OAAO,CAAC,uBAAuB,CAAC;QAKnC;;WAEG;+BAEO,oBAAoB,GAC3B,OAAO,CAAC,uBAAuB,CAAC;QAKnC;;;WAGG;0CAEO,+BAA+B,GACtC,OAAO,CAAC,uBAAuB,CAAC;QAQnC;;;WAGG;4CAEO,iCAAiC,GACxC,OAAO,CAAC,uBAAuB,CAAC;QAQnC;;;;;;;WAOG;iCAEO,sBAAsB,GAC7B,OAAO,CAAC,wBAAwB,CAAC;QAKpC;;WAEG;gCAEO,qBAAqB,GAC5B,OAAO,CAAC,uBAAuB,CAAC;QAKnC;;WAEG;6BAEO,kBAAkB,GACzB,OAAO,CAAC,uBAAuB,CAAC;;;;;;;;kBA7DjB,CAAC;mBAAO,CAAC;;;;;MAoE9B"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { ArchiveCampaignsResponseSchema, CreateCampaignResponseSchema, GetCampaignResponseSchema, GetCampaignsResponseSchema, GetChildCampaignsResponseSchema, } from "../types/campaigns.js";
|
|
2
|
+
import { formatSortParam, IterableSuccessResponseSchema, } from "../types/common.js";
|
|
3
|
+
/**
|
|
4
|
+
* Campaigns operations mixin
|
|
5
|
+
*/
|
|
6
|
+
export function Campaigns(Base) {
|
|
7
|
+
return class extends Base {
|
|
8
|
+
async getCampaigns(params, opts) {
|
|
9
|
+
// Always use pagination with defaults to ensure consistent API behavior
|
|
10
|
+
const page = params?.page ?? 1;
|
|
11
|
+
const pageSize = params?.pageSize ?? 10;
|
|
12
|
+
const sort = params?.sort;
|
|
13
|
+
const queryParams = new URLSearchParams();
|
|
14
|
+
queryParams.append("page", page.toString());
|
|
15
|
+
queryParams.append("pageSize", pageSize.toString());
|
|
16
|
+
const sortString = formatSortParam(sort);
|
|
17
|
+
if (sortString) {
|
|
18
|
+
queryParams.append("sort", sortString);
|
|
19
|
+
}
|
|
20
|
+
const url = `/api/campaigns?${queryParams.toString()}`;
|
|
21
|
+
const response = await this.client.get(url, opts?.signal ? { signal: opts.signal } : {});
|
|
22
|
+
return this.validateResponse(response, GetCampaignsResponseSchema);
|
|
23
|
+
}
|
|
24
|
+
async getCampaign(params, opts) {
|
|
25
|
+
const response = await this.client.get(`/api/campaigns/${params.id}`, opts?.signal ? { signal: opts.signal } : {});
|
|
26
|
+
return this.validateResponse(response, GetCampaignResponseSchema);
|
|
27
|
+
}
|
|
28
|
+
async createCampaign(params) {
|
|
29
|
+
const response = await this.client.post("/api/campaigns/create", params);
|
|
30
|
+
return this.validateResponse(response, CreateCampaignResponseSchema);
|
|
31
|
+
}
|
|
32
|
+
async getChildCampaigns(params, opts) {
|
|
33
|
+
// Always use pagination with defaults to ensure consistent API behavior
|
|
34
|
+
const page = params?.page ?? 1;
|
|
35
|
+
const pageSize = params?.pageSize ?? 10;
|
|
36
|
+
const sort = params?.sort;
|
|
37
|
+
const queryParams = new URLSearchParams();
|
|
38
|
+
queryParams.append("page", page.toString());
|
|
39
|
+
queryParams.append("pageSize", pageSize.toString());
|
|
40
|
+
const sortString = formatSortParam(sort);
|
|
41
|
+
if (sortString) {
|
|
42
|
+
queryParams.append("sort", sortString);
|
|
43
|
+
}
|
|
44
|
+
const url = `/api/campaigns/recurring/${params.id}/childCampaigns?${queryParams.toString()}`;
|
|
45
|
+
const response = await this.client.get(url, opts?.signal ? { signal: opts.signal } : {});
|
|
46
|
+
return this.validateResponse(response, GetChildCampaignsResponseSchema);
|
|
47
|
+
}
|
|
48
|
+
async getCampaignMetrics(options) {
|
|
49
|
+
const params = new URLSearchParams();
|
|
50
|
+
params.append("campaignId", options.campaignId.toString());
|
|
51
|
+
if (options.startDateTime)
|
|
52
|
+
params.append("startDateTime", options.startDateTime);
|
|
53
|
+
if (options.endDateTime)
|
|
54
|
+
params.append("endDateTime", options.endDateTime);
|
|
55
|
+
const response = await this.client.get(`/api/campaigns/metrics?${params.toString()}`, {
|
|
56
|
+
responseType: "text",
|
|
57
|
+
});
|
|
58
|
+
// Parse CSV response into array of objects
|
|
59
|
+
return this.parseCsv(response.data);
|
|
60
|
+
}
|
|
61
|
+
async scheduleCampaign(params) {
|
|
62
|
+
const { campaignId, ...scheduleParams } = params;
|
|
63
|
+
const response = await this.client.post(`/api/campaigns/${campaignId}/schedule`, scheduleParams);
|
|
64
|
+
return this.validateResponse(response, IterableSuccessResponseSchema);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Abort a campaign
|
|
68
|
+
* Stops a campaign that is currently running
|
|
69
|
+
*/
|
|
70
|
+
async abortCampaign(params) {
|
|
71
|
+
const response = await this.client.post("/api/campaigns/abort", params);
|
|
72
|
+
return this.validateResponse(response, IterableSuccessResponseSchema);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Cancel a scheduled or recurring campaign
|
|
76
|
+
*/
|
|
77
|
+
async cancelCampaign(params) {
|
|
78
|
+
const response = await this.client.post("/api/campaigns/cancel", params);
|
|
79
|
+
return this.validateResponse(response, IterableSuccessResponseSchema);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Activate a triggered campaign
|
|
83
|
+
* Note: API triggered campaign activation must be enabled for your project
|
|
84
|
+
*/
|
|
85
|
+
async activateTriggeredCampaign(params) {
|
|
86
|
+
const response = await this.client.post("/api/campaigns/activateTriggered", params);
|
|
87
|
+
return this.validateResponse(response, IterableSuccessResponseSchema);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Deactivate a triggered campaign
|
|
91
|
+
* Note: API triggered campaign deactivation must be enabled for your project
|
|
92
|
+
*/
|
|
93
|
+
async deactivateTriggeredCampaign(params) {
|
|
94
|
+
const response = await this.client.post("/api/campaigns/deactivateTriggered", params);
|
|
95
|
+
return this.validateResponse(response, IterableSuccessResponseSchema);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Archive one or more campaigns
|
|
99
|
+
* This behaves the same as the archive feature in the UI:
|
|
100
|
+
* - Scheduled or recurring campaigns will be cancelled
|
|
101
|
+
* - Running campaigns will be aborted
|
|
102
|
+
* - Archived campaigns will be hidden from the Campaigns page but viewable in the Archived tab
|
|
103
|
+
* Rate limit: 5 requests/second, per API key
|
|
104
|
+
*/
|
|
105
|
+
async archiveCampaigns(params) {
|
|
106
|
+
const response = await this.client.post("/api/campaigns/archive", params);
|
|
107
|
+
return this.validateResponse(response, ArchiveCampaignsResponseSchema);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Trigger a campaign to send to specified lists
|
|
111
|
+
*/
|
|
112
|
+
async triggerCampaign(params) {
|
|
113
|
+
const response = await this.client.post("/api/campaigns/trigger", params);
|
|
114
|
+
return this.validateResponse(response, IterableSuccessResponseSchema);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Send an existing campaign immediately
|
|
118
|
+
*/
|
|
119
|
+
async sendCampaign(params) {
|
|
120
|
+
const response = await this.client.post(`/api/campaigns/${params.campaignId}/send`);
|
|
121
|
+
return this.validateResponse(response, IterableSuccessResponseSchema);
|
|
122
|
+
}
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=campaigns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"campaigns.js","sourceRoot":"","sources":["../../src/client/campaigns.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { BulkDeleteCatalogItemsParams, CatalogFieldMappingsResponse, CatalogItemWithProperties, GetCatalogFieldMappingsParams, GetCatalogItemsParams, GetCatalogItemsResponse, GetCatalogsParams, GetCatalogsResponse, PartialUpdateCatalogItemParams, ReplaceCatalogItemParams, UpdateCatalogFieldMappingsParams, UpdateCatalogItemParams } from "../types/catalogs.js";
|
|
2
|
+
import { IterableSuccessResponse } from "../types/common.js";
|
|
3
|
+
import type { Constructor } from "./base.js";
|
|
4
|
+
import type { BaseIterableClient } from "./base.js";
|
|
5
|
+
/**
|
|
6
|
+
* Catalogs operations mixin
|
|
7
|
+
*/
|
|
8
|
+
export declare function Catalogs<T extends Constructor<BaseIterableClient>>(Base: T): {
|
|
9
|
+
new (...args: any[]): {
|
|
10
|
+
createCatalog(catalogName: string): Promise<IterableSuccessResponse>;
|
|
11
|
+
updateCatalogItems(options: UpdateCatalogItemParams): Promise<IterableSuccessResponse>;
|
|
12
|
+
getCatalogItem(catalogName: string, itemId: string): Promise<CatalogItemWithProperties>;
|
|
13
|
+
deleteCatalogItem(catalogName: string, itemId: string): Promise<IterableSuccessResponse>;
|
|
14
|
+
/**
|
|
15
|
+
* Get list of all catalogs with optional pagination
|
|
16
|
+
*/
|
|
17
|
+
getCatalogs(params?: GetCatalogsParams): Promise<GetCatalogsResponse>;
|
|
18
|
+
/**
|
|
19
|
+
* Get field mappings for a catalog
|
|
20
|
+
*/
|
|
21
|
+
getCatalogFieldMappings(params: GetCatalogFieldMappingsParams): Promise<CatalogFieldMappingsResponse>;
|
|
22
|
+
/**
|
|
23
|
+
* Get catalog items with optional pagination and sorting
|
|
24
|
+
*/
|
|
25
|
+
getCatalogItems(params: GetCatalogItemsParams): Promise<GetCatalogItemsResponse>;
|
|
26
|
+
/**
|
|
27
|
+
* Delete a catalog
|
|
28
|
+
*/
|
|
29
|
+
deleteCatalog(catalogName: string): Promise<IterableSuccessResponse>;
|
|
30
|
+
/**
|
|
31
|
+
* Update catalog field mappings (data types)
|
|
32
|
+
*/
|
|
33
|
+
updateCatalogFieldMappings(params: UpdateCatalogFieldMappingsParams): Promise<IterableSuccessResponse>;
|
|
34
|
+
/**
|
|
35
|
+
* Bulk delete catalog items
|
|
36
|
+
*/
|
|
37
|
+
bulkDeleteCatalogItems(params: BulkDeleteCatalogItemsParams): Promise<IterableSuccessResponse>;
|
|
38
|
+
/**
|
|
39
|
+
* Partial update (PATCH) a catalog item - updates only specified fields
|
|
40
|
+
*/
|
|
41
|
+
partialUpdateCatalogItem(params: PartialUpdateCatalogItemParams): Promise<IterableSuccessResponse>;
|
|
42
|
+
/**
|
|
43
|
+
* Replace (PUT) a catalog item - replaces the entire item
|
|
44
|
+
*/
|
|
45
|
+
replaceCatalogItem(params: ReplaceCatalogItemParams): Promise<IterableSuccessResponse>;
|
|
46
|
+
client: import("axios").AxiosInstance;
|
|
47
|
+
"__#private@#httpAgent"?: import("http").Agent;
|
|
48
|
+
"__#private@#httpsAgent"?: import("https").Agent;
|
|
49
|
+
parseNdjson(data: string): any[];
|
|
50
|
+
parseCsv(data: string): any[];
|
|
51
|
+
validateResponse<T_1>(response: {
|
|
52
|
+
data: unknown;
|
|
53
|
+
config?: {
|
|
54
|
+
url?: string;
|
|
55
|
+
};
|
|
56
|
+
}, schema: import("zod").ZodType<T_1>): T_1;
|
|
57
|
+
destroy(): void;
|
|
58
|
+
};
|
|
59
|
+
} & T;
|
|
60
|
+
//# sourceMappingURL=catalogs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogs.d.ts","sourceRoot":"","sources":["../../src/client/catalogs.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAE5B,yBAAyB,EAEzB,6BAA6B,EAC7B,qBAAqB,EACrB,uBAAuB,EAEvB,iBAAiB,EACjB,mBAAmB,EAEnB,8BAA8B,EAC9B,wBAAwB,EACxB,gCAAgC,EAChC,uBAAuB,EACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,uBAAuB,EAExB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEpD;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC;;mCAEtC,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;oCAM/D,uBAAuB,GAC/B,OAAO,CAAC,uBAAuB,CAAC;oCA0BpB,MAAM,UACX,MAAM,GACb,OAAO,CAAC,yBAAyB,CAAC;uCAQtB,MAAM,UACX,MAAM,GACb,OAAO,CAAC,uBAAuB,CAAC;QAOnC;;WAEG;6BAEQ,iBAAiB,GACzB,OAAO,CAAC,mBAAmB,CAAC;QAsB/B;;WAEG;wCAEO,6BAA6B,GACpC,OAAO,CAAC,4BAA4B,CAAC;QAYxC;;WAEG;gCAEO,qBAAqB,GAC5B,OAAO,CAAC,uBAAuB,CAAC;QA4BnC;;WAEG;mCAC8B,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;QAO1E;;WAEG;2CAEO,gCAAgC,GACvC,OAAO,CAAC,uBAAuB,CAAC;QAUnC;;WAEG;uCAEO,4BAA4B,GACnC,OAAO,CAAC,uBAAuB,CAAC;QAYnC;;WAEG;yCAEO,8BAA8B,GACrC,OAAO,CAAC,uBAAuB,CAAC;QAUnC;;WAEG;mCAEO,wBAAwB,GAC/B,OAAO,CAAC,uBAAuB,CAAC;;;;;;;;kBAnEzB,CAAC;mBAAO,CAAC;;;;;MA6EtB"}
|