{"_id":"@adsmedia/sdk","name":"@adsmedia/sdk","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@adsmedia/sdk","version":"1.0.0","description":"Official ADSMedia Email API SDK for JavaScript/TypeScript","main":"dist/index.js","module":"dist/index.mjs","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","require":"./dist/index.js","import":"./dist/index.mjs"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts","dev":"tsup src/index.ts --format cjs,esm --dts --watch","test":"vitest","lint":"eslint src --ext .ts","prepublishOnly":"npm run build"},"keywords":["adsmedia","email","api","sdk","transactional","marketing","smtp","email-api"],"author":{"name":"ADSMedia","email":"dev@adsmedia.ai"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/ADSMedia-ai/ADSMedia.git"},"bugs":{"url":"https://github.com/ADSMedia-ai/ADSMedia/issues"},"homepage":"https://www.adsmedia.ai","devDependencies":{"@types/node":"^20.10.0","tsup":"^8.0.1","typescript":"^5.3.0","vitest":"^1.0.0","eslint":"^8.55.0","@typescript-eslint/parser":"^6.13.0","@typescript-eslint/eslint-plugin":"^6.13.0"},"engines":{"node":">=16.0.0"},"_id":"@adsmedia/sdk@1.0.0","_nodeVersion":"22.19.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-l1EE8XQBFHY0CJSfU+sNskCPBon255y3vkbeufHbYwc+UpYl9ILUeGZGbGDf0punBRZdQRGOCSiyV3K84T5vTQ==","shasum":"2d22b12e439d3fd0dcb5ec6726fff5b691946de1","tarball":"https://registry.npmjs.org/@adsmedia/sdk/-/sdk-1.0.0.tgz","fileCount":6,"unpackedSize":34360,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDeT5Z1H7N2rVgjNeppL6r72plTjS4IOSx2nlyNRg6zAwIgVWyWRuoKJQJcEhZXnFSsIzB5tO1jZelumYTJNROjf5g="}]},"_npmUser":{"name":"skandar29","email":"itdep@adsmedia.ai"},"directories":{},"maintainers":[{"name":"skandar29","email":"itdep@adsmedia.ai"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdk_1.0.0_1765063427689_0.026469409071355088"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-06T23:23:47.608Z","1.0.0":"2025-12-06T23:23:47.833Z","modified":"2025-12-06T23:23:48.109Z"},"maintainers":[{"name":"skandar29","email":"itdep@adsmedia.ai"}],"description":"Official ADSMedia Email API SDK for JavaScript/TypeScript","homepage":"https://www.adsmedia.ai","keywords":["adsmedia","email","api","sdk","transactional","marketing","smtp","email-api"],"repository":{"type":"git","url":"git+https://github.com/ADSMedia-ai/ADSMedia.git"},"author":{"name":"ADSMedia","email":"dev@adsmedia.ai"},"bugs":{"url":"https://github.com/ADSMedia-ai/ADSMedia/issues"},"license":"MIT","readme":"# @adsmedia/sdk\r\n\r\nOfficial JavaScript/TypeScript SDK for ADSMedia Email API.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @adsmedia/sdk\r\n# or\r\nyarn add @adsmedia/sdk\r\n# or\r\npnpm add @adsmedia/sdk\r\n```\r\n\r\n## Quick Start\r\n\r\n```typescript\r\nimport ADSMedia from '@adsmedia/sdk';\r\n\r\nconst client = new ADSMedia({\r\n  apiKey: 'your-api-key'\r\n});\r\n\r\n// Send a single email\r\nconst result = await client.send({\r\n  to: 'recipient@example.com',\r\n  subject: 'Hello!',\r\n  html: '<h1>Welcome!</h1>',\r\n});\r\n\r\nconsole.log(`Email sent! Message ID: ${result.messageId}`);\r\n```\r\n\r\n## Features\r\n\r\n- ✅ Full TypeScript support\r\n- ✅ Tree-shakeable ESM and CommonJS builds\r\n- ✅ Zero dependencies\r\n- ✅ Works in Node.js 16+\r\n- ✅ Comprehensive API coverage\r\n\r\n## Usage Examples\r\n\r\n### Send Single Email (Transactional)\r\n\r\n```typescript\r\nconst result = await client.send({\r\n  to: 'user@example.com',\r\n  toName: 'John Doe',\r\n  subject: 'Welcome to our service!',\r\n  html: '<h1>Hello John!</h1><p>Thanks for signing up.</p>',\r\n  text: 'Hello John! Thanks for signing up.',\r\n  fromName: 'Support Team',\r\n  replyTo: 'support@yourcompany.com',\r\n});\r\n```\r\n\r\n### Send Batch Emails (Marketing)\r\n\r\n```typescript\r\nconst result = await client.sendBatch({\r\n  recipients: [\r\n    { email: 'user1@example.com', name: 'User 1', firstName: 'User' },\r\n    { email: 'user2@example.com', name: 'User 2', firstName: 'User' },\r\n  ],\r\n  subject: 'Hello %%First Name%%!',\r\n  html: '<h1>Hi %%First Name%%!</h1><p>Check out our latest offers.</p>',\r\n  preheader: 'Exclusive deals inside',\r\n  fromName: 'Marketing Team',\r\n});\r\n\r\nconsole.log(`Queued ${result.queued} emails. Task ID: ${result.taskId}`);\r\n```\r\n\r\n### Campaign Management\r\n\r\n```typescript\r\n// Create a campaign\r\nconst campaign = await client.createCampaign({\r\n  name: 'Newsletter Q1 2025',\r\n  subject: 'Monthly Update',\r\n  html: '<h1>Newsletter</h1><p>Latest news...</p>',\r\n  preheader: 'Your monthly update is here',\r\n});\r\n\r\n// Get all campaigns\r\nconst campaigns = await client.getCampaigns();\r\n\r\n// Update a campaign\r\nawait client.updateCampaign(campaign.id, {\r\n  subject: 'Updated Subject',\r\n});\r\n\r\n// Delete a campaign\r\nawait client.deleteCampaign(campaign.id);\r\n```\r\n\r\n### Contact Lists\r\n\r\n```typescript\r\n// Create a list\r\nconst list = await client.createList({\r\n  name: 'Newsletter Subscribers',\r\n  type: 1, // 1 = email\r\n});\r\n\r\n// Add contacts\r\nawait client.addContacts(list.id, [\r\n  { email: 'john@example.com', firstName: 'John', lastName: 'Doe' },\r\n  { email: 'jane@example.com', firstName: 'Jane', lastName: 'Smith' },\r\n]);\r\n\r\n// Get contacts\r\nconst contacts = await client.getContacts(list.id, 100, 0);\r\n\r\n// Remove contacts\r\nawait client.removeContacts(list.id, ['john@example.com']);\r\n```\r\n\r\n### Schedule Sending\r\n\r\n```typescript\r\n// Create a schedule\r\nconst schedule = await client.createSchedule({\r\n  campaignId: 45,\r\n  listId: 123,\r\n  serverId: 1,\r\n  senderName: 'John from Company',\r\n  schedule: '2025-12-15 10:00:00',\r\n});\r\n\r\n// Pause/Resume/Stop\r\nawait client.pauseSchedule(schedule.id);\r\nawait client.resumeSchedule(schedule.id);\r\nawait client.stopSchedule(schedule.id);\r\n```\r\n\r\n### Statistics\r\n\r\n```typescript\r\n// Get overview stats\r\nconst overview = await client.getOverviewStats();\r\nconsole.log(`Total sent: ${overview.sent}, Opens: ${overview.opens}`);\r\n\r\n// Get campaign-specific stats\r\nconst stats = await client.getCampaignStats(taskId);\r\n\r\n// Get geographic stats\r\nconst countries = await client.getCountryStats(taskId);\r\n\r\n// Get provider breakdown\r\nconst providers = await client.getProviderStats(taskId);\r\n\r\n// Get bounce details\r\nconst bounces = await client.getBounceDetails(taskId);\r\n\r\n// Get events\r\nconst opens = await client.getEvents(taskId, 'open', 100, 0);\r\n```\r\n\r\n### Domain Verification\r\n\r\n```typescript\r\nconst verification = await client.verifyDomain(serverId);\r\nconsole.log('SPF valid:', verification.spf.valid);\r\nconsole.log('DKIM valid:', verification.dkim.valid);\r\nconsole.log('DMARC valid:', verification.dmarc.valid);\r\n```\r\n\r\n### Suppression Check\r\n\r\n```typescript\r\nconst result = await client.checkSuppression('user@example.com');\r\nif (result.suppressed) {\r\n  console.log(`Email is suppressed: ${result.reason}`);\r\n}\r\n```\r\n\r\n## Configuration\r\n\r\n```typescript\r\nconst client = new ADSMedia({\r\n  apiKey: 'your-api-key',     // Required\r\n  baseUrl: 'https://api.adsmedia.live/v1', // Optional (default)\r\n  timeout: 30000,             // Optional: request timeout in ms (default: 30000)\r\n});\r\n```\r\n\r\n## Error Handling\r\n\r\n```typescript\r\nimport ADSMedia, { ADSMediaError } from '@adsmedia/sdk';\r\n\r\ntry {\r\n  await client.send({ /* ... */ });\r\n} catch (error) {\r\n  if (error instanceof ADSMediaError) {\r\n    console.error(`API Error: ${error.message}`);\r\n    console.error(`Status Code: ${error.statusCode}`);\r\n  } else {\r\n    throw error;\r\n  }\r\n}\r\n```\r\n\r\n## Personalization Placeholders\r\n\r\nUse these placeholders in your email content:\r\n\r\n| Placeholder | Description |\r\n|-------------|-------------|\r\n| `%%First Name%%` | Recipient's first name |\r\n| `%%Last Name%%` | Recipient's last name |\r\n| `%%emailaddress%%` | Recipient's email address |\r\n| `%%Sender Name%%` | Sender display name |\r\n| `%%unsubscribelink%%` | Unsubscribe URL |\r\n| `%%webversion%%` | View in browser link |\r\n\r\n## TypeScript\r\n\r\nThe SDK is written in TypeScript and provides full type definitions:\r\n\r\n```typescript\r\nimport ADSMedia, {\r\n  SendEmailOptions,\r\n  SendBatchOptions,\r\n  Campaign,\r\n  ContactList,\r\n  Schedule,\r\n  Stats,\r\n  ADSMediaError,\r\n} from '@adsmedia/sdk';\r\n```\r\n\r\n## Rate Limits\r\n\r\n- 100 requests per minute per API key\r\n- HTTP 429 returned when exceeded\r\n\r\n## Links\r\n\r\n- [API Documentation](https://www.adsmedia.ai/api-docs)\r\n- [GitHub Repository](https://github.com/ADSMedia-ai/ADSMedia)\r\n- [Report Issues](https://github.com/ADSMedia-ai/ADSMedia/issues)\r\n\r\n## License\r\n\r\nMIT © [ADSMedia](https://www.adsmedia.ai)\r\n\r\n","readmeFilename":"README.md","_rev":"1-ad18dcc8e95b3e6af9ccc7384fb19a9e"}