@panoptic-it-solutions/autotask-rate-limiter v1.0.19
Autotask Rate Limiting Utilities
This package provides utilities for rate limiting Autotask API calls using Upstash Redis. It includes:
- Rate limiting middleware for Next.js API routes
- Autotask-specific rate monitoring
- Fetch utilities for making API calls
- Environment variable configuration
Installation
npm install @your-org/autotask-rate-limiter
# or
pnpm add @your-org/autotask-rate-limiterUsage
- Set up your environment variables:
cp .env.example .env
# Edit .env with your values- Use the utilities in your API routes:
// app/api/your-route/route.ts
import { NextRequest } from 'next/server';
import { withAutotaskRateLimit } from '@your-org/autotask-rate-limiter';
export async function POST(request: NextRequest) {
return withAutotaskRateLimit(request, async () => {
// Your API logic here
});
}Features
- Automatic rate limiting using Upstash Redis
- Autotask-specific usage monitoring
- Middleware for Next.js API routes
- TypeScript support
- Configurable rate limits
- Backoff strategy for API calls
API
Rate Limiter
import { rateLimiter } from '@your-org/autotask-rate-limiter';
// Check rate limit
const { success, limit, remaining } = await rateLimiter.checkRateLimit(identifier);Autotask Rate Monitor
import { checkAutotaskLimits, applyAutotaskBackoff } from '@your-org/autotask-rate-limiter';
// Check Autotask limits
const { success, estimatedUsage } = await checkAutotaskLimits(identifier);
// Apply backoff if needed
await applyAutotaskBackoff();Fetch Utilities
import { fetchAutotaskData } from '@your-org/autotask-rate-limiter';
// Make API calls
const data = await fetchAutotaskData(
'YourEndpoint/query',
filter,
headers
);Configuration
The package requires the following environment variables:
UPSTASH_REDIS_REST_URLUPSTASH_REDIS_REST_TOKENAUTOTASK_API_INTEGRATION_CODEAUTOTASK_USERNAMEAUTOTASK_PASSWORDAUTOTASK_API_URL(Optional): You can optionally provide the full base URL for the Autotask REST API, overriding the zone-based default.
Prerequisites
To use these utilities within your Next.js project, ensure the following prerequisites are met:
1. Environment Variables
The following environment variables must be defined in your project's .env file (e.g., .env):
UPSTASH_REDIS_REST_URL: The REST URL for your Upstash Redis instance (used for rate limiting).UPSTASH_REDIS_REST_TOKEN: The access token for your Upstash Redis instance.AUTOTASK_API_INTEGRATION_CODE: Your Autotask API integration code.AUTOTASK_USERNAME: The username for Autotask API access.AUTOTASK_SECRET: The secret/password for Autotask API access.AUTOTASK_API_URL(Optional): You can optionally provide the full base URL for the Autotask REST API, overriding the zone-based default.
2. Required Packages
Ensure the following packages are installed in your main Next.js project's package.json dependencies:
pnpm install @upstash/ratelimit @upstash/redis
# or
npm install @upstash/ratelimit @upstash/redis
# or
yarn add @upstash/ratelimit @upstash/redisNote: These utilities were originally developed for a Next.js environment and rely on Next.js types and runtime features (like NextRequest, NextResponse, and the fetch API). Ensure your project environment is compatible.
Usage
You can now import and use the functions directly from this directory using relative paths or path aliases configured in your tsconfig.json.
Example (tsconfig.json path alias):
// tsconfig.json
{
"compilerOptions": {
"paths": {
"@/autotask-utils/*": ["./autotask-utils/*"]
// ... other paths
}
// ... other options
}
}Example Import:
import { checkAutotaskLimits } from "@/autotask-utils/autotask-rate-monitor";
import { fetchAutotaskData } from "@/autotask-utils/fetch";
async function someAction() {
const rateCheck = await checkAutotaskLimits("some-identifier");
// ... use utilities
}