{"_id":"@akumzy/cron-api-sdk","name":"@akumzy/cron-api-sdk","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"@akumzy/cron-api-sdk","version":"0.0.1","description":"TypeScript SDK for Cron API and Reminder services","main":"dist/index.js","module":"dist/index.esm.js","types":"dist/index.d.ts","scripts":{"build":"bun run tsup","dev":"bun run tsup --watch","test":"bun test","test:watch":"bun test --watch","lint":"bun run eslint src --ext .ts","prepublishOnly":"bun run build"},"keywords":["cron","scheduler","reminder","api","typescript","sdk","webhook","automation","jobs","background-tasks"],"author":{"name":"Your Name"},"license":"MIT","devDependencies":{"@types/bun":"latest","@types/node":"^22.15.21","@typescript-eslint/eslint-plugin":"^6.0.0","@typescript-eslint/parser":"^6.0.0","eslint":"^8.0.0","tsup":"^7.2.0","typescript":"^5.0.0"},"dependencies":{"axios":"^1.6.0"},"repository":{"type":"git","url":"your-repo-url"},"engines":{"node":">=16","bun":">=1.0.0"},"packageManager":"bun@1.0.0","_id":"@akumzy/cron-api-sdk@0.0.1","gitHead":"0bf4c046cf7f812beeff568db449e032ea110335","_nodeVersion":"22.5.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-qRsmbu01Ig4cQNZ1NaZx610m7+fKKptNko1uQl/f+qJsRlna9gI4yfJenrPhPf9I2OklmRwrnbGGeLHyHO4VAg==","shasum":"22fd276a79a2b391388e9805aaa2bcd8d7d52ef2","tarball":"https://registry.npmjs.org/@akumzy/cron-api-sdk/-/cron-api-sdk-0.0.1.tgz","fileCount":8,"unpackedSize":78279,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBErrbORyu+0ruKyXVByqjwscDF9ryEvzQNlph5vXOsLAiAxU8AEueuyZeE9HfhMFELyLsc/1F1POGnNWeuqfCntMA=="}]},"_npmUser":{"name":"akumzy","email":"akumaisaacakuma@gmail.com"},"directories":{},"maintainers":[{"name":"akumzy","email":"akumaisaacakuma@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cron-api-sdk_0.0.1_1748455068875_0.6161179193877584"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-28T17:57:48.755Z","0.0.1":"2025-05-28T17:57:49.090Z","modified":"2025-05-28T17:57:49.332Z"},"maintainers":[{"name":"akumzy","email":"akumaisaacakuma@gmail.com"}],"description":"TypeScript SDK for Cron API and Reminder services","keywords":["cron","scheduler","reminder","api","typescript","sdk","webhook","automation","jobs","background-tasks"],"repository":{"type":"git","url":"your-repo-url"},"author":{"name":"Your Name"},"license":"MIT","readme":"# Cron API TypeScript SDK\n\nA comprehensive TypeScript SDK for interacting with the Cron API and Reminder services.\n\n## Features\n\n- 🕒 **Full Cron Job Management** - Create, update, delete, and trigger cron jobs\n- 📅 **Reminder System** - One-off and recurring reminders with timezone support\n- 🔧 **Service Management** - Manage webhook endpoints for notifications\n- 📊 **Logging & Monitoring** - Access execution logs and job history\n- 🛡️ **Type Safety** - Full TypeScript support with comprehensive type definitions\n- 🚀 **Easy to Use** - Simple, intuitive API with excellent developer experience\n- 🔐 **Authentication** - Basic auth support for secure API access\n\n## Installation\n\n```bash\nnpm install @akumzy/cron-api-sdk\n```\n\nOr with yarn:\n\n```bash\nyarn add @akumzy/cron-api-sdk\n```\n\n## Quick Start\n\n```typescript\nimport { CronApiSDK } from '@akumzy/cron-api-sdk';\n\n// Create SDK instance\nconst sdk = CronApiSDK.create('http://localhost:8080', {\n  username: 'your-username',\n  password: 'your-password',\n});\n\n// Or for development\nconst sdk = CronApiSDK.createForDev({\n  username: 'admin',\n  password: 'admin',\n});\n\n// Test connection\nawait sdk.ping();\n```\n\n## Usage Examples\n\n### Job Management\n\n```typescript\n// Create a new cron job\nconst job = await sdk.jobs.create({\n  name: 'Daily Backup',\n  schedule: '0 2 * * *', // Every day at 2 AM\n  method: 'POST',\n  url: 'https://api.example.com/backup',\n  headers: {\n    Authorization: 'Bearer token',\n    'Content-Type': 'application/json',\n  },\n  payload: JSON.stringify({ action: 'backup' }),\n  active: true,\n});\n\n// Get all jobs\nconst jobs = await sdk.jobs.getAll();\n\n// Get specific job\nconst specificJob = await sdk.jobs.getById(1);\n\n// Update a job\nconst updatedJob = await sdk.jobs.update({\n  ...job,\n  schedule: '0 3 * * *', // Change to 3 AM\n});\n\n// Trigger job manually\nawait sdk.jobs.trigger(job.id);\n\n// Get job logs\nconst logs = await sdk.jobs.getLogs(job.id);\n\n// Delete job\nawait sdk.jobs.delete(job.id);\n```\n\n### Service Management\n\n```typescript\n// Create a service endpoint\nconst service = await sdk.services.create({\n  name: 'Slack Notifications',\n  endpoint: 'https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK',\n  description: 'Send notifications to Slack channel',\n});\n\n// Get all services\nconst services = await sdk.services.getAll();\n\n// Update service\nconst updatedService = await sdk.services.update({\n  ...service,\n  description: 'Updated description',\n});\n\n// Delete service\nawait sdk.services.delete(service.id);\n```\n\n### Reminder Management\n\n```typescript\n// Create a one-off reminder\nconst oneOffReminder = await sdk.reminders.create({\n  type: 'one-off',\n  service_id: service.id,\n  message: 'Important meeting tomorrow!',\n  scheduled_time: new Date('2024-12-25T09:00:00Z').toISOString(),\n});\n\n// Create a recurring reminder\nconst recurringReminder = await sdk.reminders.create({\n  type: 'recurring',\n  service_id: service.id,\n  message: 'Daily standup meeting',\n  time: '09:00', // 9 AM\n  timezones: ['America/New_York', 'Europe/London', 'Asia/Tokyo'],\n});\n\n// Get all reminders\nconst reminders = await sdk.reminders.getAll();\n\n// Trigger reminder manually\nawait sdk.reminders.trigger(oneOffReminder.id);\n\n// Get reminder logs\nconst reminderLogs = await sdk.reminders.getLogs(oneOffReminder.id);\n\n// Delete reminder\nawait sdk.reminders.delete(oneOffReminder.id);\n```\n\n### Cron Expression Utilities\n\n```typescript\nimport { CronUtils } from '@akumzy/cron-api-sdk';\n\n// Validate cron expression\nconst isValid = CronUtils.validateCronExpression('0 9 * * 1-5');\nconsole.log(isValid); // true\n\n// Parse cron expression to human-readable format\nconst description = CronUtils.parseCronExpression('0 9 * * 1-5');\nconsole.log(description); // \"Every weekday at 9:00 AM\"\n\n// Use common expressions\nconst everyDay = CronUtils.commonExpressions.everyDay; // \"0 0 * * *\"\n\n// Create cron expression\nconst expression = CronUtils.createCronExpression({\n  minute: 30,\n  hour: 14,\n  dayOfWeek: 1, // Monday\n});\nconsole.log(expression); // \"30 14 * * 1\"\n\n// Get next execution times\nconst nextRuns = CronUtils.getNextExecutions('0 9 * * 1-5', 5);\nconsole.log(nextRuns); // Array of next 5 execution dates\n```\n\n## API Reference\n\n### CronApiSDK\n\nThe main SDK class that provides access to all API clients.\n\n```typescript\nconst sdk = new CronApiSDK({\n  baseURL: 'http://localhost:8080',\n  timeout: 10000, // optional, default 10s\n  auth: {\n    username: 'admin',\n    password: 'password',\n  },\n  headers: {\n    // optional additional headers\n    'X-Custom-Header': 'value',\n  },\n});\n```\n\n### JobsClient\n\nManages cron jobs and their execution.\n\n- `getAll()` - Get all jobs\n- `getById(id)` - Get job by ID\n- `create(job)` - Create new job\n- `update(job)` - Update existing job\n- `delete(id)` - Delete job\n- `trigger(id)` - Manually trigger job\n- `getLogs(id)` - Get job execution logs\n- `getAllLogs()` - Get all job logs\n\n### RemindersClient\n\nManages reminders and notifications.\n\n- `getAll()` - Get all reminders\n- `getById(id)` - Get reminder by ID\n- `create(reminder)` - Create new reminder\n- `update(reminder)` - Update existing reminder\n- `delete(id)` - Delete reminder\n- `trigger(id)` - Manually trigger reminder\n- `getLogs(id)` - Get reminder execution logs\n- `getAllLogs()` - Get all reminder logs\n\n### ServicesClient\n\nManages service endpoints for webhooks.\n\n- `getAll()` - Get all services\n- `getById(id)` - Get service by ID\n- `create(service)` - Create new service\n- `update(service)` - Update existing service\n- `delete(id)` - Delete service\n\n## Types\n\nThe SDK includes comprehensive TypeScript types:\n\n```typescript\nimport type { Job, JobLog, Reminder, ReminderType, ReminderStatus, Service, CronApiConfig } from '@akumzy/cron-api-sdk';\n```\n\n## Error Handling\n\nThe SDK provides consistent error handling:\n\n```typescript\ntry {\n  const job = await sdk.jobs.getById(999);\n} catch (error) {\n  console.error(error.message); // \"API Error (404): Job not found\"\n}\n```\n\n## Development\n\nTo build the SDK locally:\n\n```bash\n# Install dependencies\nnpm install\n\n# Build the package\nnpm run build\n\n# Run tests\nnpm run test\n\n# Lint code\nnpm run lint\n\n# Watch mode for development\nnpm run dev\n```\n\n## Contributing\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add some amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Support\n\nFor support and questions, please open an issue on the GitHub repository.\n","readmeFilename":"README.md","_rev":"1-cc5c174fc44d4f1efbec3346130384b9"}